如何使用htaccess重写根URL但保持所有子文件夹不变

时间:2014-02-02 10:02:35

标签: apache .htaccess mod-rewrite

我正在尝试重写我的网站的根网址,但我需要存储在子文件夹中的所有内容保留在同一个地址...到目前为止我所拥有的是

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/stockroom
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]
</IfModule>
# END WordPress

并且它有效,但是我收到一个错误,因为oldsite.com/stockroom有一个iframe没有显示,因为它选择了oldsite.com/magazzino/index.php,它是在newsite.com/magazzino/index中转换的。 PHP

编辑:我的问题是/ stockroom页面加载了错误:[错误]拒绝显示&#39; http://newsite.com/magazzino/index.php&#39;在一个框架中因为它设置了X-Frame-Options&#39;到#SAMEORIGIN,SAMEORIGIN&#39;。 (约:空白,第0行)。当然,这取决于iframe的url是由htaccess规则重写的事实,但它不应该!它应该是http://oldsite.com/magazzino/index.php ...我错过了什么?

我是htaccess的新人,我真的很感激一些帮助。

最好的问候, 西蒙

2 个答案:

答案 0 :(得分:0)

如果您希望不重定向所有文件夹,可以更改正则表达式模式:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/stockroom
RewriteRule ^([^/]*)$ http://newsite.com/$1 [R=301,L]
</IfModule>

[^/]*表示 a /的任意数量的字符。因此,不会重定向任何文件夹。

答案 1 :(得分:0)

尝试此规则:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(stockroom|magazzino/) [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]