2

下面的代码将我们网站上 /profiles/ 目录中的所有 URL 从 重写example.com/profiles/name/example.com/name/,但我们还想删除尾部斜杠以进一步简化生成的 URL,使其更漂亮example.com/name- 就像在现代社交媒体上一样。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profiles/$1 [NC,L]

如何做到这一点(并安全地完成)?我们在 Stumble Upon 上看到了几种解决方案,如果组合起来可能可行,但我们网站上的所有配置文件目前都有自己的物理目录,而不是通过脚本即时组装。

更新: @jon-lin 在How to access directory's index.php without a trailing slash AND not get 301 redirect中提供了类似情况的解决方案——但我们没有弄清楚如何将其应用于我们的(如上所述)。

4

4 回答 4

1

你可以尝试做

RewriteRule ^(.*)/+$ $1 [R=301,L]

哪个适用于任何网址

于 2015-10-20T05:15:21.357 回答
0

通过在How to access directory's index.php without a trailing slash AND not get 301 redirect (internally rewriting the trailing slash back in) 中添加@jon-lin 建议的部分代码,我们实际上完成了这项工作:

# Vanity URLs

DirectorySlash Off

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /profiles/$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/

/profiles/gucci/现在可以在https://www.fashion.net/gucci访问FASHION NET 上的 Gucci 简介(位于 谢谢你,@jon-lin!!!!

于 2015-11-12T07:12:17.537 回答
0

使用以下重定向:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.+)/+$
RewriteRule ^ /%1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /profiles/$0 [NC,L]
于 2015-10-20T05:41:57.303 回答
0

您需要禁用目录斜杠

尝试 :

DirectorySlash Off

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profiles/$1 [NC,L]
于 2015-10-20T05:44:31.747 回答