1

我在两台服务器上使用 Apache 2.2:

  • 开发:本地主机/项目/公共
  • 生产:www.example.com

我有一个干净的 url 的现有重写规则(从 url 中删除 'index.php')。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

我有一条特殊路线,在存在斜杠时才有效:

  • 特殊路线(开发):localhost/public/documentation/
  • 特殊路线(生产):www.example.com/documentation/

如何向现有的 .htaccess 添加重写规则以始终添加尾部斜杠,但仅适用于文档路径?

4

2 回答 2

3

您只需要添加另一个RewriteRule仅与/documentationie 匹配且没有尾部斜杠的内容。第一条规则添加尾部斜杠,然后您现有的规则添加index.php.

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(documentation)$ $1/ [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

如果您希望浏览器的地址栏也反映尾部斜杠,请将规则更改为

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^(documentation)$ $1/ [R=301,NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-10-07T10:27:36.457 回答
0

不要忘记在每个.htaccess文件中先添加一次这些指令:

Options +FollowSymlinks
RewriteEngine on

然后你可以试试这个:

RewriteRule ^/?(documentation)$ /$1/ [R,NC,L]

或这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} (.+)/([^/]+)$
RewriteRule ^/?(documentation)/(.+)$ /$1/$2/ [R,NC,L]

我对你的问题感到困惑..

于 2013-10-08T04:03:58.647 回答