.htaccess:将根URL重定向到子目录,但保留根URL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.htaccess:将根URL重定向到子目录,但保留根URL相关的知识,希望对你有一定的参考价值。
我正在清理域名的目录结构(对我来说,在根目录中设置根URL的内容很糟糕!)并且需要一些关于如何正确使用RewriteRule的见解。
要旨
我希望domain.tld使用domain.tld /子目录/但仍然在url中显示为domain.tld。
我的.htaccess到目前为止
Options +FollowSymlinks
RewriteEngine On
#Force removal of wwww subdomain
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.domain.tld
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
#Trailing slash
RewriteRule ^/*(.+/)?([^.]*[^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301]
#Redirect root url to subdirectory
RedirectMatch 301 ^/subdirectory/$ http://domain.tld/
RewriteRule ^/$ /subdirectory/?$ [L]
RedirectMatch效果很好。不幸的是,似乎最后的RewriteRule应该足够简单,但事实并非如此。仍会显示根目录中的旧内容设置。
我在这里错过了什么?
更新:已解决
简单的修复,我没有足够的经验与.htaccess / apache能够解释原因。
我有:
RewriteRule ^/$ /subdirectory/?$ [L]
删除一个斜杠修复了所有内容:
RewriteRule ^$ /subdirectory/?$ [L]
所以现在我的问题是:为什么?
试试这个:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/subdirectory/
# REWRITES ALL URLS
# [REPLACE "domain" WITH THE ACTUAL DOMAIN,
# WITHOUT THE TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www.)?domain.
# REWRITE ALL THOSE TO subdirectory
RewriteRule ^(.*)$ /subdirectory/$1 [L]
BR Spiros
RewriteRule
中URI的一部分不包含前面的斜杠。
所以为了匹配http://example.com/
你必须使用RewriteRule ^$
,其中RewriteRule ^/$
理论上匹配http://example.com//
(注意双斜线)。
附加:?$
在最后没有任何意义,因为这会添加一个带有空参数$
的查询字符串。
最后你有:RewriteRule ^$ /subdirectory/ [L,QSA]
这两条规则都是有效的:
这个用于服务器配置或虚拟主机上下文(URL以前导斜杠开头):
RewriteRule ^/$ /subdirectory/ [L]
如果在.htaccess中放置相同的规则,则必须删除前导斜杠(因为它相对于当前文件夹):
RewriteRule ^$ /subdirectory/ [L]
附: Floern已经提到过?$
它的目标URL部分。根本不需要$
。如果使用?
完成URL,则告诉Apache不要将查询字符串转移到新URL(完全删除查询字符串)。
此外,仅当您使用查询字符串进行操作(目标URL中包含[QSA]
)并且仍希望将当前查询字符串附加到新构建的URL时,才需要使用?
标志。这意味着在这条规则RewriteRule ^$ /subdirectory/ [L,QSA]
中,[QSA]
旗帜什么都不做,可以安全地移除。
我尝试了解决方案,但在我的情况下删除/文件夹/ BUT显示旧网站(www.site.it)而不是www.site.it/folder/删除'文件夹'...我复制并粘贴相同的代码,但在我的情况下不起作用:(我开了一个新主题:.htaccess: Redirect root wordpress url to another wordpress in a subdirectory, but retain root url
以上是关于.htaccess:将根URL重定向到子目录,但保留根URL的主要内容,如果未能解决你的问题,请参考以下文章