2011-04-18 29 views
0

我創建簡單的國防部重寫簡單的mod重寫,沒有重複的網址。有可能的?

# REMOVE WWW 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L] 


# URL REWRITE 
RewriteEngine on 

RewriteRule ^design/?$ website-designing.php [L] 

一切工作正常。我的問題是目前這兩個網址正在工作。如何防止這一點?

mydomain.com/website-designing.php (my original URL) 

mydomain.com/design/ (my SEO URL) 

我只想SEO URL,相同的概念應用於我所有的文件放在這個目錄(該目錄內150多個URL)的

這是可能的嗎?

回答

0

對於每個RewriteRule ^design/?$ website-designing.php [L],您都可以禁止訪問相應的資源。

RewriteRule website-designing.php - [F] 

也許

RewriteRule .*\.php - [F] 
0

我想你會遇到麻煩禁止人們進入到真正的PHP文件,由於客戶端應該能夠顯示它。

如果您使用乾淨的URL,我認爲搜索引擎找不到文件名,如果您不在代碼中註冊它們並禁止訪問目錄。

通過搜索引擎友好重寫應該像這樣:

RewriteRule ^design/$ /website-designing.php [L] 

(任何一個試圖訪問設計/熱力四射/website-designing.php:沒有重定向,所以你不會看到名稱在地址欄中)。

我從未使用過nosubreq [NS]標誌。據說它過濾了由模塊生成的內部子請求。但不確定它是否適用於內部HTTP調用。 (既然你重寫規則觸發新的要求,所有的規則將被重新處理,所以你不能只是否認所有.php文件訪問)

也許你可以試試:

RewriteRule ^.*\.php$ - [F,NS] 

但是,不要指望多這個的。

我會嘗試一些技巧,看看是否有用。

編輯:

看來,我們可以做的東西:REDIRECT_URLREQUEST_URI看起來好像他們正在與rewritting保守。如:

RewriteCond %{REDIRECT_URL} \.php 
RewriteRule ^.*$ - [F] 

RewriteRule ^design/$ /website-designing.php [L] 

當您在地址欄中調用.php文件時,這應該禁止任何訪問。