Php 在重写子域后强制将尾部斜杠添加到URL

Php 在重写子域后强制将尾部斜杠添加到URL,php,apache,wordpress,.htaccess,mod-rewrite,Php,Apache,Wordpress,.htaccess,Mod Rewrite,我正在将一个子域写入一个“文件夹”——实际上是wordpress中的一个页面,这一切似乎都正常工作。但我不想更改URL栏中的地址 一切正常,除非用户没有在页面名称后添加一个尾随斜杠,否则页面仍然会重定向到正确的URL,但地址栏中的URL会发生更改 例如:foo.example.com/bar 变成:public.example.com/foo/bar 其中:foo.example.com/bar/位于地址栏中的正确URL,但显示重定向页面(这是正确的) 如果尾部斜杠未发送,我需要添加什么规则才能

我正在将一个子域写入一个“文件夹”——实际上是wordpress中的一个页面,这一切似乎都正常工作。但我不想更改URL栏中的地址

一切正常,除非用户没有在页面名称后添加一个尾随斜杠,否则页面仍然会重定向到正确的URL,但地址栏中的URL会发生更改

例如:foo.example.com/bar 变成:public.example.com/foo/bar

其中:foo.example.com/bar/位于地址栏中的正确URL,但显示重定向页面(这是正确的)

如果尾部斜杠未发送,我需要添加什么规则才能添加到尾部斜杠中

到目前为止,我掌握的代码是:

<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>

重新启动发动机
重写基/
选项+FollowSymlinks
RewriteCond%{HTTP_HOST}^foo\.example\.com$[NC]
重写规则^(.*)$http://public.example.com/foo/$1[P]
#WordPress的规则。。。
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#####

任何帮助都会非常好,我对htaccess还很陌生。谢谢

这条规则应该做到:

RewriteRule .*[^/]$ %{REQUEST_URI}/
把这条规则放在其他规则之前。您还可能希望添加一个条件以排除现有文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/

唷,在玩了一会儿之后,我似乎已经开始工作了:

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执行代理重定向


据我所知,这可以抓住所有案件,但让我知道,如果有任何漏洞

RewriteRule^(.*)$http://public.example.com/foo/$1[L]
应该总是导致外部重定向,但你是说如果在URL上包含一个尾随斜杠,则不会导致外部重定向?嗨,蒂姆!啊,我贴错代码了。它应该是[P]而不是[L]-正确的页面显示时没有斜杠,但它在地址栏中重定向。用斜杠,一切都很完美!谢谢Gumbo,不幸的是,我在这条线路上遇到了一个500服务器错误。在一些地方尝试过,但没有乐趣:(.谢谢您的帮助!错误日志显示:由于可能的配置错误,请求超出了10个内部重定向的限制。