Php .htaccess重写规则问题
这似乎是一个简单的.htaccess重写规则,但我仍然有问题 基本上,我希望域后面的任何文本都被解释为Php .htaccess重写规则问题,php,apache,.htaccess,Php,Apache,.htaccess,这似乎是一个简单的.htaccess重写规则,但我仍然有问题 基本上,我希望域后面的任何文本都被解释为index.php?$text,当然,除非该文本是文件名 例如: http://domain.com/register->http://domain.com/index.php?register http://domain.com/images/image.jpeg->http://domain.com/images/image.jpeg 这就是我到目前为止所做的: RewriteRule^[A
index.php?$text
,当然,除非该文本是文件名
例如:
http://domain.com/register
->http://domain.com/index.php?register
http://domain.com/images/image.jpeg
->http://domain.com/images/image.jpeg
这就是我到目前为止所做的:
RewriteRule^[A-Za-z]+$index.php?$1
但是,它没有像应该的那样将$\u GET变量传递给PHP页面
谢谢你的帮助
编辑我正在使用PHP-因此,如果有比.htaccess更好的脚本编写方法,请告诉我。将QSA标志添加到重写规则中,使其看起来像
RewriteRule ^[A-Za-z]+$ index.php?$1 [QSA]
QSA(查询字符串添加)将查询字符串添加到重写结果中。因此,任何$\u GET都将附加到传递到php脚本的内容上
您可能也会考虑添加L标志,尤其是如果这就是您试图重写的全部内容。它告诉处理器,如果此规则处理它,则重写结束
所以看起来像
RewriteRule ^[A-Za-z]+$ index.php?$1 [QSA,L]
我也经常添加NC,这使得它不区分大小写,所以您不必像在正则表达式中那样处理大小写
另一件需要记住的事情是,您没有将$1作为一个适当的get var传递。最好命名它即将出现的var。我刚刚注意到,您并没有首先创建$1风险值。试试这个
RewriteRule ^([A-Za-z]+)$ index.php?urlRequest=$1 [QSA,L]
然后在index.php中检查它
echo $_GET['urlRequest'];
希望有帮助 首先,您从不分组(存储)文本,因此$1是“”。你应使用:
RewriteRule ^([A-Za-z]+)$ index.php?$1
其次,如果您想忽略文件名(任何带有“.”的文件)。使用:
这表示如果域后面的路径不包含“.”,请将其重写为index.php?foo
如果要限制文件扩展名,请使用:
RewriteCond %{REQUEST_URI} "^([^\.(php|jpeg|html|css|ico)]*)$"
RewriteRule ^([.]+)$ index.php?$1
我试过你给的密码,但似乎不起作用。。。(我用
if(isset($\u GET['register']){echo“GET request”;}
@Chromium测试了它,你的url字符串是什么样子的?我想加上,#RewriteCond%{request\u FILENAME}!-f#RewriteCond%{request\u FILENAME}!-dMight还想添加一个RewriteCond,以避免重写图像目录的URL。谢谢!我刚刚添加了您在回答中修改的代码,现在它可以工作了。
RewriteCond %{REQUEST_URI} "^([^\.(php|jpeg|html|css|ico)]*)$"
RewriteRule ^([.]+)$ index.php?$1