我知道这可能听起来有些愚蠢,但没有其他方法可以解决它。我有正斜杠/
的问题。我想将其从网址中删除,因为它会给浏览器带来一些混淆,这些浏览器会提供受信任或不受信任的网址。
这是主域的代码:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ /user [R=301,L]
这是上述代码的输出:https://www.mydomain.com/user/
但我希望网址重定向到此:
https://www.mydomain.com/user
我还想从此网址中删除正斜杠:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule (.*) /$1/ [R,L]
RewriteCond %{REQUEST_URI} ^(/end)
RewriteRule ^(.*)$ /top/right/left/bottom/$1 [L]
RewriteCond %{REQUEST_URI} ^/top/right/left/bottom
RewriteRule top/right/left/bottom/(end)(/(./*))?$ $1$2 [R,L]
这是上述代码的输出:https://www.mydomain.com/end/
但我希望网址重定向到此:
https://www.mydomain.com/end
上一个问题:为什么我必须在某些浏览器(如FF或Chrome)中自行编写 www。,以便重定向使自己成为所需的网址?
感谢所有评论
答案 0 :(得分:1)
看起来上面的重写规则是由我写的。因此,优化网址不会以/
(https://www.mydomain.com/end
)
将整个(从RewriteCond %{ENV:REDIRECT_STATUS} 200
更改为RewriteRule top/right/left/bottom/(end)(/(./*))?$ $1$2 [R,L]
)事物替换为:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteRule ^(end)(?:/(.*))? /top/right/left/bottom/$1/$2 [L]
RewriteRule ^top/right/left/bottom/(end)(/.*)?$ $1$2 [R,L]
请记住,如果您使用这样的正斜杠访问:https://www.mydomain.com/end/
将不会删除正斜杠。
如果您希望删除/
:请用以下内容替换最后两条规则:
RewriteRule ^(end)(?:/(.+))? /top/right/left/bottom/$1/$2 [L]
RewriteRule ^(end)/$ $1 [R,L]
RewriteRule ^top/right/left/bottom/(end)(/.*)?$ $1$2 [R,L]
答案 1 :(得分:0)
将url存储在变量中并执行rtrim
以删除尾部斜杠
$redirectURL = rtrim($redirectURL, "/");