【发布时间】:2017-08-16 03:47:38
【问题描述】:
我有许多网址,可以输入或不输入斜杠。它们被用作虚 URL。
.htaccess 看起来像这样:
Redirect 301 /folder/vanity1 http://example.com/differentfolder/
Redirect 301 /folder/vanity2 http://example.com/a/third/folder/
Redirect 301 /vanity3 http://example.com/fourth/folder/
用户输入:
http://example.com/folder/vanity1
http://example.com/folder/vanity2
http://example.com/vanity3
http://example.com/folder/vanity1/
http://example.com/folder/vanity2/
http://example.com/vanity3/
当用户在没有尾部斜杠的情况下输入这些内容时,重定向工作正常,最终在 http://example.com/differentfolder/ 处根据需要使用一个尾部斜杠。
问题:
当用户使用尾部斜杠键入这些内容时,例如http:/example.com/folder/vanity1/,他们会重定向到带有两个尾部斜杠的 URL,例如引发 404 错误的 http://example.com/differentfolder//。
我试过了:
- 从 .htaccess 中删除所有其他行,除了这三个虚 URL 和保持站点正常运行所需的标准 WordPress 块。 WordPress 块出现在文件的最后:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我不仅检查了我的浏览器,还检查了 WebConfs HTTP Header Check,以确保我没有看到缓存规则。还是一样,如果你输入一个没有斜杠的虚 URL,它就可以工作;如果你用一个斜杠键入它,它会重定向到两个斜杠,这会导致 404。
- 在我的规则中添加斜杠:
Redirect 301 /folder/vanity1/ http://example.com/differentfolder/
如果用户键入尾部斜杠,这可以正常工作,但如果他们离开斜杠,它不会重定向和 404,因为 URL http://example.com/folder/vanity1/ 实际上并不存在。
问题:
无论访问者在虚 URL 中输入哪种方式(带有或不带有尾部斜杠),是否有其他方法可以将虚 URL 重定向到仅带有一个尾部斜杠的最终目的地?
【问题讨论】:
标签: .htaccess redirect mod-alias