我使用正则表达式将.htaccess用于漂亮的网址。
.htaccess中有多个RewriteRule
规则,它们都很好用。
我遇到其中一个问题,我无法在哪里出问题了,只能把我带到找不到的404页面。
RewriteRule ^member/password-reset/v/([0-9]+)?/([0-9]+)?/([a-z0-9]+)?$ /member/password-reset-verify.php?&uid=$1&id=$1&t=$1 [NC,L]
丑陋的网址看起来像这样(不带括号):
/member/password-reset-verify.php?&uid=(user_uid_here)&id =(another_id_here)&t =(令牌)
我希望漂亮的网址看起来像这样(不带括号)
/ member / password-reset / v /(user_uid_here)/(another_id_here)/(token)
uid(仅包含数字)
id(仅包含数字)
令牌(可以包含字母和数字)
很遗憾,我无法使RewriteRule
正常工作。如果能使它正常工作,我将不胜感激。
答案 0 :(得分:1)
我在上面的评论中已经提到了这个问题的一些问题。
尽管如此,我还是会尝试清理一下您当前的规则:
RewriteEngine on
RewriteRule ^/?member/password-reset/v/(\d+)/(\d+)?/(\w+)/?$ /member/password-reset-verify.php?uid=$1&id=$2&t=$3 [END]
如果您收到HTTP状态500(内部服务器错误)的机会,则可能是您使用的Apache HTTP服务器版本非常旧。您将在http服务器的错误日志文件中看到对未定义END
标志的明确提示。在这种情况下,请尝试使用旧的L
标志,它可能可以相同地工作,尽管这在一定程度上取决于您的设置。
此规则将在http服务器的主机配置或动态配置文件(“ .htaccess”)中同样起作用。如果您有权访问http服务器的主机配置,则根本不应该使用动态配置文件,因为动态配置文件有很多缺点。它们仅提供给那些真正廉价的托管服务提供商的人,作为进行微调的最后选择。