apache mod_rewrite 规则不起作用

apache mod_rewrite 规则不起作用

我正在其他地方测试下面的规则并且它可以正常工作,但在我的系统上却不行(centos 7,Apache/2.4.6)[我将我的域名更改为 domain.com 以便在此处发布]

该规则的目的是重写http://domain.com/story.php?id=xxxxhttp://domain.com/story.php?id=xxxx

请注意,wordpress 规则有效,但这个无效

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([^&]+) [NC]
RewriteRule ^story\.php$ /?p=%1 [L,NC,R=302]

我的 .htaccess 文件如下(以防有冲突的规则)

RewriteBase /
Redirect 301 /forums http://domainforums.com
Options -Indexes
RewriteRule ^([a-z]{2}|zh-CN|zh-TW)/forums/(.*)$ /forums/$2 [R=301,L,QSA]
RewriteRule ^([a-z]{2}|zh-CN|zh-TW)/(.*)$ http://$1.domain.com/$2     [R=301,L,QSA]
RewriteRule ^(server-info|mv-server-status) - [L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

答案1

规则末尾使用的 $ 符号如下:

^story\.php$

表示匹配结束,因此该规则只对这样的请求起作用:

http://domain.com/story.php

但不能用于其他目的,例如:

http://domain.com/story.php?id=1

相关内容