我正在使用此规则重写链接
RewriteEngine On
RewriteRule ^(.*)/(.*) show_cv.php?email=$1它工作得很好,就像我用最后一个斜杠写这个url一样。
www.mysite.com/letschat_2008@yahoo.com/ ----> index.php?email=letschat_2008@yahoo.com但是,当我从链接www.mysite.com/letschat_2008@yahoo.com/中删除最后一个斜杠时,它显示错误404。
我希望URL重写规则可以同时适用于有斜杠和不带斜杠的情况(/)
www.mysite.com/letschat_2008@yahoo.com/ ----> index.php?email=letschat_2008@yahoo.com
www.mysite.com/letschat_2008@yahoo.com ----> index.php?email=letschat_2008@yahoo.com发布于 2012-08-01 01:44:07
您的规则正在循环,您需要确保正在重写电子邮件地址,并添加一些条件,以便规则在访问现有资源时不会被应用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_\-\@\.]+)/?$ /show_cv.php?email=$1 [L]发布于 2012-08-01 00:41:24
然后,您应该使用以下规则:
RewriteRule ^(.*)/? show_cv.php?email=$1发布于 2012-08-01 00:44:54
我假设您在查看您的描述时,将这些规则记录在.htaccess文件中,而不是服务器配置中?
如果您不想将其放入服务器配置中,请三思。除了.htaccess文件的使用更难调试之外,在这些文件中使用重写规则比在服务器配置中更复杂。mod_rewrites文档中记录了这一点。
这种行为的原因是两种情况下REQUEST_URI的内容不同。试着直接检查一下,你会发现问题所在。在第二种情况下,变量中完全缺少"letschat_2008@yahoo.com“部分(没有"/")。要使其正常工作,您必须使用额外的rewriteCondition (也有文档...)。类似于这些未经测试的代码行:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.+)&
RewriteRule - show_cv.php?email=%1(注意最后一行中的'%‘而不是'$’)
https://stackoverflow.com/questions/11744937
复制相似问题