RewriteRule在.htaccess中工作不在另一个包含的文件中吗?

时间:2015-10-07 17:17:19

标签: .htaccess mod-rewrite

我有一台Magento和Wordpress的服务器。

Magento位于​​/下的网站/blog/,Wordpress中。

在网站根目录的文件中指定了各种Redirect 301RedirectMatch permanent。这个文件是"包含"来自Apache vhost配置:

Include /var/www/html/myredirects

Wordpress中的某些页面应该可以从网站根目录中看到,所以

http://www.mymagento.com/pretty-url/ 

将显示与

相同的内容
http://www.mymagento.com/blog/pretty-url/

目前在.htaccess文件中使用一些重写如下所示:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^pretty-url/ /blog/pretty-url/ [L]

    [...more like the above here and the common Magento rewrites follow...]

    RewriteRule ^api/rest api.php?type=rest [QSA,L]
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^index.php
    RewriteCond %{REQUEST_URI} !\.(html|jpg|png|gif)$
    RewriteCond %{HTTP:X-Requested-With} !=XMLHttpRequest
    RewriteRule ^(.*)$ %{REQUEST_URI}/ [L,R=301]
    RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
    RewriteRule .* - [L,R=405]
    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]
</IfModule>

是否可以仅将显示某些网页的RewriteRule行从根目录中的博客移至myredirects文件?

我尝试使用和不使用部件来移动它们

Options +FollowSymLinks
RewriteEngine on

并且在两种情况下它都不起作用,结果是空白页面或服务器错误。

我在Apache文档中找不到.htaccess中定义的内容使其起作用的原因是什么。也许是因为处理顺序?

编辑,问及myredirects的外观(请注意这些重定向工作已经开始):

它们是一堆包含Magento不同产品类别的网址,还有一些与/blog/相关的网址,它们看起来都像这样:

# These are Magento
RedirectMatch permanent /product-category/sub-category-1/sub-category-2/(colorA|colorB|colorC) /sub-category-2/$1
Redirect 301 /someurl/otherurl/ /another/url
# These are for Wordpress
Redirect 301 /blog/tag/some-tag/ /blog/some-tag/
Redirect 301 /blog/tag/another-tag/ /blog/another-tag/

博客的那些只是重定向/tag/部分,而不是其他任何内容。

是的,它只是部分/blog/网址也应该在网站根目录中显示,其他网址将保留在/blog/下(我知道这些网址会有重复内容)显示在两个路径中。)

0 个答案:

没有答案