我有Mod Rewrite的问题。
RewriteRule ^([^-]*)/$ $1.php
RewriteRule ^page/([^-]*)/$ /showpage.php?id=$1 [L]
所以当我输入example.com/page/
时,它会转到page.php,这没关系
但是当我想要去page/1/ (example.com/showpage.php?id=1)
并试着去
$_GET['id']
变量它让我回到了这个
1.php/1
答案 0 :(得分:1)
发生了什么:
/page/1/
:(第一条规则匹配)重写为/page/1.php
/page/1.php
:(第二条规则匹配)重写为/showpage.php?id=1.php
要避免它:
您必须在第一条规则之后添加[L]
标记。
您可以使用更好的模式。例如[^/]+
意味着at least one character which is not a slash
(将阻止
在你的情况下规则冲突)。
您可以检查文件是否存在(非强制性,但更好)。
这应该按预期工作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/$ /$1.php [L]
RewriteRule ^page/([^/]+)/$ /index.php?id=$1 [L]