htaccess:同一页面的不同网址不起作用

时间:2013-05-15 05:39:02

标签: php .htaccess

我在htaccess文件中有这些行:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [NC]
RewriteRule ^(.*)/(.*)$ index.php?page=$1&article=$2 [NC]

就像/news/test这样的地址而言,页面变量就像index.php。 任何想法如何解决?

1 个答案:

答案 0 :(得分:1)

您在第一个行中有(.*)个匹配,这将匹配您的两个方案。

试试这个,它在以下场景中对我有用:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ /index.php?page=$1&article=$2 [L]
RewriteRule ^(.*)$ /index.php?page=$1 [L]

适用于:

http://www.example.com/news/test -> http://www.example.com/index.php?page=news&article=test
http://www.example.com/news/ -> http://www.example.com/index.php?page=news&article=
http://www.example.com/news -> http://www.example.com/index.php?page=news

如果您需要做其他事情,请告诉我。为了正确测试,我添加了[L,R=302]而不是[L],以查看网址是否正确形成。