mod重写不从htaccess文件中读取规则

马克西姆斯

我正在使用WAMP(Apache 2.2.9和PHP 5.4.17)。我几乎没有在生产服务器(CentOS)上运行的简单mod重写规则,但是在我的Windows计算机上,一个规则被忽略了。我花了3天的时间找到解决方案,但没有一个起作用。

这是mod重写规则

Options -Indexes FollowSymLinks MultiViews

RewriteEngine on
RewriteBase /mysite/

RewriteRule ^reviews/([a-zA-Z0-9_-]+)/([0-9]+)/(.*).html$ page-review.php?t=$1&m=$2&s=$3 [L] #This is being ignored by Apache
RewriteRule ^reviews/?$ reviews.php [L]
RewriteRule ^reviews/([a-zA-Z0-9_-]+)-reviews/?$ reviews.php?r=$1 [L]
RewriteRule ^file/([a-zA-Z0-9_-]+)/s([0-9]+)-([a-zA-Z0-9_-]+)/f([0-9]+)-(.*).html$ file.php?c=$1&s=$2&st=$3&&m=$4&t=$5 [L]

第一条重写规则被Apache忽略。令人惊讶的是,当我从htaccess中删除所有内容时,它仍然会读取我的规则。我打开了mod rewrite日志,这是日志详细信息

log for http://localhost/mysite/reviews/product/11/samsung.html

127.0.0.1 - - [23/Aug/2013:14:37:34 +0100] [localhost/sid#453140][rid#1821000/subreq] (1) [perdir /mydir/] pass through /mydir/reviews.php
127.0.0.1 - - [23/Aug/2013:14:37:34 +0100] [localhost/sid#453140][rid#17cc4f0/initial] (1) [perdir /mydir/] pass through /mydir/reviews.php
127.0.0.1 - - [23/Aug/2013:14:37:34 +0100] [localhost/sid#453140][rid#17d0500/initial] (1) [perdir /mydir/] pass through /mydir/reviews.php
127.0.0.1 - - [23/Aug/2013:14:37:34 +0100] [localhost/sid#453140][rid#1835050/initial] (1) [perdir /mydir/] pass through /mydir/reviews.php

如您在上面所看到的,它不是将上面的请求重写为page-review.php,而是读取reviews.php文件。

这是另一个很好的请求

log for http://localhost/mysite/file/downloads/software/f5983-docs.html

127.0.0.1 - - [23/Aug/2013:14:39:42 +0100] [localhost/sid#453140][rid#47f4188/initial] (2) [perdir /mydir/] rewrite 'file/downloads/software/f5983-docs.html' -> 'file.php?c=downloads&s=45&st=software&&m=5983&t=docs'
127.0.0.1 - - [23/Aug/2013:14:39:42 +0100] [localhost/sid#453140][rid#47f4188/initial] (2) [perdir /mydir/] trying to replace prefix /mydir/ with /mysite/
127.0.0.1 - - [23/Aug/2013:14:39:42 +0100] [localhost/sid#453140][rid#47f4188/initial] (1) [perdir /mydir/] internal redirect with /mysite/file.php [INTERNAL REDIRECT]
127.0.0.1 - - [23/Aug/2013:14:39:42 +0100] [localhost/sid#453140][rid#47ed3e0/initial/redir#1] (1) [perdir /mydir/] pass through /mydir/file.php
阿努巴瓦

规则通常看起来还不错。尝试以下经过稍微修改的代码:

Options -Indexes +FollowSymLinks -MultiViews

RewriteEngine on
RewriteBase /mysite/

RewriteRule ^reviews/(\w+)/([0-9]+)/([^.]+)\.html$ page-review.php?t=$1&m=$2&s=$3 [L,QSA,NC]
RewriteRule ^reviews/?$ reviews.php [L,NC]
RewriteRule ^reviews/(\w+)-reviews/?$ reviews.php?r=$1 [L,QSA,NC]
RewriteRule ^file/(\w+)/s([0-9]+)-(\w+)/f([0-9]+)-([^.]+)\.html$ file.php?c=$1&s=$2&st=$3&&m=$4&t=$5 [L,QSA,NC]

Btw正则表达式在您的最后一条规则中将不匹配 file/downloads/software/f5983-docs.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.htaccess文件重写规则中的连字符

来自分类Dev

在htaccess中重写规则

来自分类Dev

htaccess中的重写规则

来自分类Dev

htaccess-mod重写-重写规则

来自分类Dev

htaccess:排除任何htaccess规则重写目录中的文件

来自分类Dev

.htaccess文件的网址重写规则

来自分类Dev

重写htaccess中的规则问题

来自分类Dev

2 .htaccess中的重写规则?

来自分类Dev

.htaccess中的重写规则-问号

来自分类Dev

.htaccess 中重写规则的异常

来自分类Dev

htaccess mod重写规则-可选参数

来自分类Dev

htaccess mod重写规则,附加url参数

来自分类Dev

htaccess重写规则以隐藏实际文件

来自分类Dev

htaccess重写规则(文件夹除外)

来自分类Dev

Mod Rewrite htaccess-重写规则中的两个变量

来自分类Dev

使用.htpasswd重写.htaccess冲突中的规则

来自分类Dev

用重写htaccess中的规则。(点)

来自分类Dev

使用.htaccess在重写规则中匹配问号

来自分类Dev

无法在htaccess中重写斜杠规则

来自分类Dev

htaccess重写规则的URL中包含斜杠

来自分类Dev

重写规则覆盖子文件夹htaccess规则?

来自分类Dev

htaccess多个URL和PHP $ _GET的Mod重写规则

来自分类Dev

为什么.htaccess mod重写规则未激活?

来自分类Dev

使htaccess重写规则首先检查该文件夹路径中的索引页

来自分类Dev

htaccess重写规则,以从URL中删除多个子文件夹

来自分类Dev

htaccess重写规则,以从URL中删除多个子文件夹

来自分类Dev

使htaccess重写规则首先检查该文件夹路径中的索引页

来自分类Dev

重写规则以仅重命名目录-.htaccess中的一个文件

来自分类Dev

.htaccess mod_rewrite-使规则忽略文件