2014-03-19 188 views
0

美好的一天。目前我正忙于重塑网站。无法解决几个问题。.htaccess rewriterule和301重定向

1.I需要改变URL结构 - 例如链接«SomePage的»,如:

site.com/index.php?page=somepage 

会是这个样子:

site.com/someCategory/somepage 

正如我为了不明白失去«somepage»的页面排名我需要做301重定向。据我了解它看起来就像这样:

Redirect 301 site.com/index.php?page=somepage site.com/someCategory/somepage 

如果超过一页(约400),那么它看起来就像这样:

Redirect 301 site.com/index.php?page=somepage site.com/someCategory/somepage 
Redirect 301 site.com/index.php?page=somepage1 site.com/someCategory/somepage1 
Redirect 301 site.com/index.php?page=somepage2 site.com/someCategory/somepage2 

Redirect 301 site.com/index.php?page=somepageN site.com/someCategory/somepageN 

2.我需要从WWW重定向到非www。它看起来是这样的:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

3.Also,目前我的.htaccess文件有规则创建漂亮的网址:

DirectoryIndex index.php 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)/(.+)/?$ index.php?category=$1&page=$2 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)/?$ index.php?category=$1 

的问题是:

  • 如何将它们结合起来所有?我应该以什么顺序安排这一切?
  • 无论重定向在大约400个301redirects的存在下正常工作吗?
  • 也许你可以指出我的错误?
+0

同样的问题去这个网址http://stackoverflow.com/questions/4817663/htaccess-rewrite-rule-rewriting-301-redirects –

回答

1
RewriteEngine On 

# www to non-www 
RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] 

# SEO format to dynamic format (200, not 301) 
RewriteRule ^someCategory/([^/]+)/?$ /index.php?page=$1 [QSA] 
# 'someCategory' is fixed text 

someCategory去改变?将它变成另一个查询字符串变量会有用吗?

#3与#1有什么不同?你不要做一个301映射SEO格式为内部动态格式。 #3更多的搜索引擎优化到动态?你如何区分#1和#3?

+0

已经存在的网站。现在从外部引用它(例如搜索引擎)是:'site.com/index.php?page = somepage'(唯一的变量页) 例如,用户点击旧链接的网站。 com/index.php?page = page1',然后将他重定向(#1)到'site.com/someCategory/page1'(somecategory和somepage - variables),然后#3开始工作。 #3负责将'/ someCategory/page1'转换为清晰的php'index.php?category = someCategory&page = page1'。 也许这一切都不可能实现? 希望我解释清楚 – fntms