2011-11-25 103 views
0

我在我的htaccess文件中有以下內容。我正在試圖做的是通過domain.com/whatever 使這個htaccess重寫是否正確?

domain.com/index.php/view/whatever accessable也從重定向到non wwwwww

這適用於所有其中有index.php/view的網址,但現在其他網址中沒有index.php/view的網站無法使用。例如:domain.com/index.php/site/pages不再有效,因爲它沒有index.php/view

我希望htaccess隻影響那些在他們中有index.php/view的URL,而不是其他任何東西。我需要做些什麼來解決這個問題?

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ /index.php/view/$1 [L] 

RewriteCond %{http_host} ^domain.com [nc] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc] 

UPDATE。爲了縮小範圍,我如何擁有這樣的規則。我需要他們兩個

RewriteRule ^(.*)$ /index.php/view/$1 
RewriteRule ^(.*)$ /index.php/site/$1 

回答

1

所以,如果一個請求的東西做出像http://domain.com/index.php/site/pages,你想讓它穿過不變,但如果是像http://domain.com/whatever,你想讓它變得改寫?

您在那裏的第一條規則會匹配所有內容(文件和目錄除外)。你可能想的東西,如縮小重寫規則:

重寫規則^ index.php文件/index.php/view/$1 [L]

HTH

尼爾

+0

不,這不解決這個問題。爲了縮小這個問題,我該如何規定'RewriteRule ^(。*)$/index.php/view/$ 1'和'^(。*)$/index.php/site/$ 1'。我似乎只有其中之一。我需要他們兩個 – Pinkie

+0

我真的不認爲你可以擁有他們兩個,你可能需要做一些事情:'RewriteRule^site /(.*)$/index.php/view/ $ 1'和'RewriteRule^view /(.*)$/index.php/site/ $ 1' – lfxgroove

+1

你不能用兩種方法重寫每個URL,並且mod_rewrite無法知道哪個方法是正確的。 – user1064663