How do I make mod_rewrite suppress processing more rules?

99封情书 提交于 2019-12-12 09:41:06

问题


Given my current .htaccess file, how would I modify it to check for an additional URL path like '/src/pub/' and rewrite it to '/' without affecting the current rewrite?

Here's the original .htaccess file:

RewriteEngine on

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

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

and here's my recent attempt (which doesn't work):

RewriteEngine on

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

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

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

Edit: Here are some examples of what I want to accomplish:

New Additional Rule:

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

Existing Rule (already working):

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

回答1:


I'm guessing that the problem is that the URL is being rewritten by the first rule, and then rewritten again by the second.

The solution to that is to add the "last" flag to the first rule, like this:

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



回答2:


within a .htaccess file, use this instead:

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

the leading "/" will not match within .htaccess, only within httpd.conf (src - bottom of page) if you wish for processing of further rules to stop, then add the L flag:

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

rewrite log comparison (.htaccess context):

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


来源:https://stackoverflow.com/questions/285383/how-do-i-make-mod-rewrite-suppress-processing-more-rules

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!