2011-09-20 145 views
1

我的工作在网站上,我面临着一个大问题是:解决冲突的URL重写规则

  1. 我希望我的所有流量http://www.example.com/http://example.comhttp://www.example.com/folder/http://example.com/folder/

(注:这里关键的是它可以为无限数量的子文件夹或页面工作,只要它的同一根域)

  1. 我w蚂蚁重写http://example.com/namehttp://example.com/folder/page.php?page= $ name,除了我会指定的一些网址,如http://example.com/css。 这一次,网址仍然显示http://example.com/name这是访问过的页面,但实际上页面已被重写。这与第一种情况不同,即更改地址栏中的网址。

现在,这是我所:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    Options -Multiviews 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
    RewriteCond %{REQUEST_URI} !^/(candidates|css|employers|layout|pics|securimage)/?$ 

    RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 
    RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L] 
</IfModule> 

的问题,我和我上面所说有有有:

  1. 它不重定向到http://www.example.com/http://example.com

  2. 这似乎改写为好,但http://www.example.com/name当我有一个网址与像http://example.com/css一个例外它改变了网址http://example.com/css/?page=css

请问我该如何解决这个问题。

非常感谢。

回答

0

你必须分开你的条件ANS重写规则:

对于WWW子域名:

RewriteCond %{HTTP_HOST} ^www.example.tld$ 
RewriteRule ^(.*) http://example.tld/$1 [QSA,R=301] 

那么对于QSA重定向,除非该文件存在:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L]