我在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
。
任何想法如何解决?
答案 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]
,以查看网址是否正确形成。