我正在将子域重写为'文件夹' - 实际上是wordpress中的一个页面,这一切似乎都正常工作。我不希望URL栏中的地址发生变化。
除非用户没有在页面名称后面加上斜杠,否则一切正常,然后页面仍然会重定向到正确的URL,但地址栏中的URL会发生变化
例如:foo.example.com/bar 成为:public.example.com/foo/bar
其中:foo.example.com/bar/保留在地址栏中的正确网址,但显示重定向的网页(这是正确的)
如果未发送尾部斜杠,我需要添加什么规则才能添加?
我到目前为止的代码是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P]
# rules for WordPress ...
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#####
</IfModule>
任何帮助都会很棒,我对htaccess很新。谢谢!
答案 0 :(得分:0)
这条规则应该这样做:
RewriteRule .*[^/]$ %{REQUEST_URI}/
将此规则放在其他规则之前。您还可能希望添加条件以排除现有文件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/
答案 1 :(得分:0)
RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://foo.example.com/$1/ [L,R=301]
RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P]
基本上,第一个块会在URL中添加一个尾随斜杠,因为它首先不存在,然后第二个块会对URL进行代理重定向。
据我所知,这可以捕获所有情况,但如果有任何漏洞,请告诉我!