我试图做的是拥有漂亮的 URL。在我希望整个字符串指向一个 PHP 脚本的情况下,我已经实现了这一点。但我没有。
因此,这是可行的:example.com/login/1/2
=>/index.php?go=login&do=1&msg=2
使用:
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z_-]+)/?$ /index.php?go=$1 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2&q1=$3 [L,QSA]
现在假设我想要example.com/webapp/1/2/3
=>webapp.php?1=1&2=2&3=3
在上面内容下方添加以下内容:
RewriteRule ^webapp/?$ /webapp.php [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2&q1=$3 [L,QSA]
每次导航到都会example.com/webapp
重定向到,删除任何查询字符串。index.php
如果我注释掉第一个代码块并导航到example.com/webapp
我webapp.php
应得的结果。
我在任何日志中都没有收到任何错误。调用期间的访问日志向 webapp 报告 302
我究竟做错了什么?
答案1
通过在上面下面添加这个
你需要补充一点前以上!
您的规则需要按具体性顺序排列。首先是更具体的规则,最后是最通用的规则。您的第一个规则块包含最通用/包罗万象的规则,因此这就是捕获请求并停止处理的地方。
答案2
我不确定您是否正确理解了漂亮 URL 的概念:https://en.wikipedia.org/wiki/Semantic_URL 你计划做的事肯定不会对你的 SEO 有帮助。而且你不应该进行临时重定向(302 重定向),而应该进行永久重定向 [R=301]。