首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根目录的.htaccess中的URL重写规则

根目录的.htaccess中的URL重写规则
EN

Stack Overflow用户
提问于 2012-08-01 00:37:13
回答 3查看 261关注 0票数 1

我正在使用此规则重写链接

代码语言:javascript
复制
RewriteEngine On
RewriteRule ^(.*)/(.*) show_cv.php?email=$1

它工作得很好,就像我用最后一个斜杠写这个url一样。

代码语言:javascript
复制
www.mysite.com/letschat_2008@yahoo.com/  ---->  index.php?email=letschat_2008@yahoo.com

但是,当我从链接www.mysite.com/letschat_2008@yahoo.com/中删除最后一个斜杠时,它显示错误404。

我希望URL重写规则可以同时适用于有斜杠和不带斜杠的情况(/)

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2012-08-01 01:44:07

您的规则正在循环,您需要确保正在重写电子邮件地址,并添加一些条件,以便规则在访问现有资源时不会被应用:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_\-\@\.]+)/?$ /show_cv.php?email=$1 [L]
票数 1
EN

Stack Overflow用户

发布于 2012-08-01 00:41:24

然后,您应该使用以下规则:

代码语言:javascript
复制
RewriteRule ^(.*)/? show_cv.php?email=$1
票数 0
EN

Stack Overflow用户

发布于 2012-08-01 00:44:54

我假设您在查看您的描述时,将这些规则记录在.htaccess文件中,而不是服务器配置中?

如果您不想将其放入服务器配置中,请三思。除了.htaccess文件的使用更难调试之外,在这些文件中使用重写规则比在服务器配置中更复杂。mod_rewrites文档中记录了这一点。

这种行为的原因是两种情况下REQUEST_URI的内容不同。试着直接检查一下,你会发现问题所在。在第二种情况下,变量中完全缺少"letschat_2008@yahoo.com“部分(没有"/")。要使其正常工作,您必须使用额外的rewriteCondition (也有文档...)。类似于这些未经测试的代码行:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.+)&
RewriteRule - show_cv.php?email=%1

(注意最后一行中的'%‘而不是'$’)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11744937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档