重写规则问题

时间:2012-09-09 09:30:21

标签: apache .htaccess url rewrite

我似乎遇到了我的Apache重写问题

RewriteEngine on

RewriteBase / 
RewriteRule ^wordpress/?$ / [NC,L,R=301] 

RewriteRule ^/$ wordpress/ [NC,L]

我只需要从URL中删除/ wordpress,因为我在Wordpress中有页面我希望被视为主目录

目前网址

domain.com/wordpress/blog

我宁愿没有/ wordpress,而不是domain.com/blog

任何帮助?

2 个答案:

答案 0 :(得分:0)

RewriteEngine on
RewriteBase /
RewriteRule ^wordpress/(.*)$ blog/$1 [L]

答案 1 :(得分:0)

  

目前网址

     

domain.com/wordpress/blog

     

我宁愿没有/ wordpress,而不是domain.com/blog

因此,如果有人向domain.com/wordpress/请求wordpress没有wordpress位的网址,那么您希望重定向浏览器,然后内部重写< / strong> /wordpress返回URI ?这绝对是可行的,但是如果你在某个地方有wordpress重写规则,那么它们根本就不会很好地相互配合。

/wordpress目录中的任何规则都将取代您放置在文档根目录中的任何规则,这是这些规则需要执行的规则,并且将完全忽略从URI中删除的wordressress规则。即使您启用了规则继承,RewriteEngine on RewriteBase / # redirect the browser if someone makes a request for domain.com/wordpress/ RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /wordpress/ RewriteRule ^/?wordpress/(.*)$ /$1 [L,R=301] # internally rewrite the wordpress bit back into the URI RewriteRule %{DOCUMENT_ROOT}/wordpress%{REQUEST_URI} -f [OR] RewriteRule %{DOCUMENT_ROOT}/wordpress%{REQUEST_URI} -d RewriteRule ^(.*)$ /wordpress/$1 [L] 目录中的规则也将首先执行。

如果您的所有wordpress规则实际上都在文档根目录的htaccess文件中,那么只需确保将这些放在之前的wordpress:

{{1}}