4

鉴于我当前的 .htaccess 文件,我将如何修改它以检查额外的 URL 路径,如“/src/pub/ ”并将其重写为“/ ”而不影响当前的重写?

这是原始的 .htaccess 文件:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

这是我最近的尝试(不起作用):

RewriteEngine on

RewriteRule ^/src/pub/(.*)$ /$1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

编辑:以下是我想要完成的一些示例:

新的附加规则:

From:  http://www.mysite.com/src/pub/validfile.php
To:    http://www.mysite.com/validfile.php

From:  http://www.mysite.com/src/pub/user/detail/testuser
To:    http://www.mysite.com/user/detail/testuser

现有规则(已经生效):

From:  http://www.mysite.com/user/detail/testuser
To:    http://www.mysite.com/index.php?route=user/detail/testuser
4

2 回答 2

5

我猜测问题在于 URL 正在被第一条规则重写,然后又被第二条规则重写。

解决方案是在第一条规则中添加“last”标志,如下所示:

RewriteRule ^/src/pub/(.*)$ /$1 [R,L]
于 2008-11-12T21:20:20.090 回答
3

在 .htaccess 文件中,改用它:

RewriteRule ^src/pub/(.*)$ /$1 [R]

如果您希望停止处理进一步的规则,则前导“/”将在 .htaccess 内httpd.conf匹配,仅在(srcL - 页面底部)内匹配,然后添加标志:

RewriteRule ^src/pub/(.*)$ /$1 [L,R]

重写日志比较(.htaccess 上下文):

// using ^/src/pub/(.*)$ - leading slash will not work in .htaccess context!
(1) pass through /home/test/src

// using ^src/pub/(.*)$
(2) rewrite 'src/pub/testme' -> '/testme'
(2) explicitly forcing redirect with http://test/testme
(1) escaping http://test/testme for redirect
(1) redirect to http://test/testme [REDIRECT/302]
于 2008-11-12T21:25:02.123 回答