我有以下 htaccess 文件。
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.domain_name\.com$ [NC]
RewriteRule (.*) http://domain_name.com/ [R=301,L]
RewriteCond %{HTTP_HOST} !^domain_name\.com$
RewriteCond %{REQUEST_URI} !^/retailers/
RewriteRule (.*) /retailers/$1 [L]
当我进入时
- www.domain_name.com -- 工作正常
- domain_name.com -- 工作正常
- sub.domain_name.com -- 工作正常 [sub 表示任何有效的子域名]
问题是 当我输入 sub.domain.com/admin [admin 是/www/retailers/admin 中的文件夹] 时,它将 url 更改为 sub.domain_name.com/retailers/admin。它应该如何在地址栏中显示 sub.domain_name.com/admin。
我不知道如何才能实现这一点
最佳答案
发生这种情况是因为 admin
是目录,而 mod_dir
强制使用尾部斜杠。您可以像这样拥有 .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(domain_name\.com)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# force a trailing slash for directories
RewriteCond %{HTTP_HOST} !^domain_name\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/retailers/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]
RewriteCond %{HTTP_HOST} !^domain_name\.com$ [NC]
RewriteRule ^((?!retailers/).*)$ retailers/$1 [L,NC]
关于php - .htaccess - 子域的 DocumentRoot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377217/