我有一台Magento和Wordpress的服务器。
Magento位于/
下的网站/blog/
,Wordpress中。
在网站根目录的文件中指定了各种Redirect 301
和RedirectMatch 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/
下(我知道这些网址会有重复内容)显示在两个路径中。)