【发布时间】:2014-05-29 16:13:07
【问题描述】:
在我的目录根目录下的 .htaccess 文件中,我有这个;
RewriteEngine on
RewriteBase /
RewriteRule ^website-comments/webid/([^/]*)$ /website-comments?webid=$1 [L]
但由于某种原因,它没有重写 URL,如果我的想法是正确的,那么如果用户访问 www.website.com/website-cmets?webid=1 它应该将 URL 更改为 www.website。 com/website-cmets/webid/1 但它似乎没有工作,我做错了什么吗?提前致谢
编辑 1
其他 HTACCESS 规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
【问题讨论】:
-
在你的服务器上,最终应该执行的脚本是
/website-comments?webid=$1? mod_rewrite 不会自动将直接指向该资源的链接更改为您首选的漂亮 URL - 您需要编写一个规则来首先重定向到漂亮 URL。请通过示例输入 URL、输出 URL 以及最终执行请求的脚本进一步阐明您的需求。 -
@MichaelBerkowski 因此,如果我只是在 URL 中输入类似 website-cmets/webid/1 之类的内容,它应该可以工作,但如果我尝试通过单击链接访问它,它就不会重定向?跨度>
-
使用您当前的规则,访问 URL
website-comments/webid/1将静默重写以提供?webid=1。但是,如果用户点击了一个旧的、不漂亮的链接,该链接直接指向/website-comments?webid=1,那么他最终会看到的 URL。您需要 another 规则首先将其重定向到/website-comments/webid/1然后像它已经做的那样默默地提供脚本。您的目标是最终用户永远不会看到/website-comments?webid=1? -
@MichaelBerkowski 啊哈我明白了!非常感谢,如果您将其写成答案,我会为您接受
-
@user3263978 好的,我想我已经制定了您需要的以下规则。
标签: php .htaccess url mod-rewrite rewrite