在我的本地主机上,没有问题,但当我将.htaccess文件上传到我的1and1主机帐户时,我遇到了一堵砖墙(内部500服务器错误)
更新:我发现了有问题的代码,只是不知道为什么会破坏它或者如何修复它(我注释掉了这条虚线)
#RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ index.php?p=$1 [R,NC,QSA,L]
RewriteRule ^([a-zA-Z_/]+)(\/?)$ index.php?p=$1 [R,NC,QSA,L]
.htaccess文件内容:
AddType x-mapp-php5 .php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ /index.php?p=$1 [L]
注释掉最后一行(RewriteRule ...)可以阻止错误发生,但我显然需要这个功能。
该文件在我的本地计算机上运行正常。 好吧它有点不同所以我也会包含那些代码 (差异:旗帜,'/ NEP'和第1行)
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ /NEP2/index.php?p=$1 [NC,QSA,L]
我正在尝试重写的几个例子:
dev.mydomain.com/services/ => dev.mydomain.com/index.php?p=services
dev.mydomain.com/quality/control => dev.mydomain.com/index.php?p=quality/control
非常感谢您提供的任何帮助/建议。我真的需要在一天结束时完成这项工作。
答案 0 :(得分:1)
字符集中的连字符/破折号用作范围操作符(例如0-9或a-z)。将它放在中间或末尾可能会有问题。
将其移动到字符集的开头可以避免此问题,这意味着您不必使用\
转义它:
[-a-zA-Z_/]