我的 Apache 上有一个 RewriteRule 以使 URL 变得友好
RewriteRule ^log/(.+)$ script.php?u=$1 [QSA]
这使得http://example.com/log/用户名 http://example.com/log/username内部重定向到http://example.com/script.php?u=用户名 http://example.com/script.php?u=username
只要用户名不包含尾随句点,这就可以正常工作。然而,也有一些用户名,人们选择像“firstname-L”这样的名字。 (注意尾随句点)
在这种情况下http://example.com/firstname-L http://example.com/firstname-L。被翻译成http://example.com/script.php?u=firstname-L http://example.com/script.php?u=firstname-L(尾随期间消失了)
我怎样才能让它发挥作用?
您可以尝试检查这些配置指令:
RewriteCond %{REQUEST_URI} !^/log/(.+)\.$
RewriteRule ^log/(.+)$ /script.php?u=$1 [QSA]
RewriteCond %{REQUEST_URI} ^/log/(.+)\.$
RewriteRule ^log/(.+)$ /script.php?u=$1. [QSA]
OR:
RewriteCond %{REQUEST_URI} ^/log/(.+)([a-zA-Z0-9_-]{1})$
RewriteRule ^log/(.+)$ /script.php?u=$1 [QSA]
RewriteCond %{REQUEST_URI} ^/log/(.+)\.$
RewriteRule ^log/(.+)$ /script.php?u=$1. [QSA]
我希望,我没有弄错。现在,由于带有一个字符或带有尾随句点的一个字符的用户名变量在第二个代码中不起作用,我们可以尝试用以下代码替换第二个代码:
RewriteCond %{REQUEST_URI} ^/log/(.*)([a-zA-Z0-9_-]{1})$
RewriteRule ^log/(.+)$ /script.php?u=$1 [QSA]
RewriteCond %{REQUEST_URI} ^/log/(.*)\.$
RewriteRule ^log/(.*)$ /script.php?u=$1. [QSA]
或者,如果您不喜欢四个班轮,您可以尝试这三个班轮指令:
RewriteCond %{REQUEST_URI} ^/log/(.*)\.$
RewriteRule ^log/(.*)$ /script.php?u=$1. [QSA]
RewriteRule ^log/(.*)([a-zA-Z0-9_-]{1})$ /script.php?u=$1$2 [QSA]
我希望上面的所有代码都能工作!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)