我正在尝试做的是拥有漂亮的 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
我究竟做错了什么?
您需要在上述内容之前添加它!
您的规则需要按照具体的顺序排列。最具体的规则在前,最一般的规则在后。您的第一个规则块包含最通用/包罗万象的规则,因此这就是捕获请求并停止处理的地方。
我不确定你是否正确理解了漂亮 URL 的概念:https ://en.wikipedia.org/wiki/Semantic_URL 你打算做什么肯定不会帮助你的 SEO。而且您不应该临时重定向(302 重定向),而是永久重定向 [R=301]。