URL重写规则
我使用这个规则重写链路URL重写规则
RewriteEngine On
RewriteRule ^(.*)/(.*) show_cv.php?email=$1
,如果我写这篇文章的网址与去年斜线
www.mysite.com/[email protected]/ ----> [email protected]
但是当它工作正常状我从链接www.mysite.com/[email protected]/
删除最后一个斜杠它显示错误404.
我希望URL重写规则适用于斜杠和没有斜杠(/
)
www.mysite.com/[email protected]/ ----> [email protected]
www.mysite.com/[email protected] ----> [email protected]
,那么你应该使用以下规则:
RewriteRule ^(.*)/? show_cv.php?email=$1
我假设你在.htaccess文件注意这些规则,而不是在服务器配置看你的描述是什么时候?
重新思考如果你不想把它放到服务器配置中。除了使用.htaccess文件难以在这些文件中使用重写规则调试比在服务器配置中更复杂之外。这在mod_rewrites文档中有记录。
行为的原因是在这两种情况下REQUEST_URI的内容不同。尝试直接检查,你会看到问题。整个部分“[email protected]”在情况2(no“/”)中只是在该变量中丢失。为了得到这个工作,你必须使用额外的rewriteCondition(也记录了......)。像这些未经测试的线路:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.+)&
RewriteRule - show_cv.php?email=%1
(注意是“%”,而不是在最后一行“$”)的
你的规则是循环的,你需要确保你重写的电子邮件地址,并添加一些条件,使该规则不应用如果它的访问现有的资源:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_\-\@\.]+)/?$ /show_cv.php?email=$1 [L]
非常感谢您的工作正常... – DEVESH 2012-08-01 05:28:25
@DEVESH接受答案,以便您的问题不会显示在未回答的问题列表中 – 2012-08-01 05:49:20
嗯,我已经使用这个规则,但在show_cv.php我没有得到“[email protected]”值在查询字符串中,我在查询字符串中获得“show_cv.php”值。 – DEVESH 2012-07-31 16:45:56