2017-08-11 125 views
0

我有一個網站設置,用戶可以聲稱「/頁」,如
mywebsite.com/example1或mywebsite.com/example2。重定向如果URL只包含字母或數字

如果用戶鍵入一個不存在的URL,它顯然會重定向到一個404錯誤頁面。但是,我希望如果用戶輸入一個不存在的包含的網址只是字母或數字(無符號或類似),然後,它將被重定向到我創建的頁面,指出「url available!」。 。

我配置了一個這樣的.shtml頁面,以便輸入一個有效的URL時,它顯示了這一點:

<h1>available</h1>  
<div>mywebsite.com<!--#echo var="REQUEST_URI" --> is available.</div> 

example1 example2

不過,我不知道如何設置了「有效性「部分。我希望它只顯示這個頁面,如果輸入的URL只包含數字或字母,沒有符號。換句話說,

mywebsite.com/@user goes to 404 error page 
mywebsite.com/u$er goes to 404 error page 
mywebsite.com/user_ goes to 404 error page 
mywebsite.com/user redirects to my custom page 
mywebsite.com/user123 redirects to my custom page 
mywebsite.com/123 redirects to my custom page 

我現在有它設置在404錯誤頁面是一個指出「mywebsite.com /(...)可用」,但是這會導致問題,因爲它會說幾乎任何東西都可用。我曾嘗試使用RewriteRule ^(.*);(.*)$ /error.shtml [L,R=301]阻止某些字符,其中每個RewriteRule檢測url是否包含另一個符號,並將301重定向到我的自定義錯誤頁面。但是,此代碼不能重定向所有符號,例如,如果我把RewriteRule ^(.*)$(.*)$ /error.shtml [L,R=301]重定向到URL中美元符號的任何用途,它會給我一個服務器錯誤,因爲「$」是保留字符。 (除非有我不知道的解決方法)!所以我反而採用這種方法,而不是阻止符號,只是只有允許字母和數字。

非常感謝幫助!需要!

回答

1

使用下列規則.htaccess文件:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^[a-zA-Z0-9\._]+$ custom.page [L] 

如果某樣東西存在,被擔任了正常。如果它不存在,並且當前目錄的請求uri部分只包含字母數字字符,它會轉到custom.page。如果它包含其他內容,則會進入默認的404頁面。

+0

完美的作品!非常感謝! – Cris

+0

Hi @Peter有沒有方法可以包含句點和下劃線? – Cris

+0

@Cris是的,現在它也可以使用句點和下劃線 –

1

這是我會怎麼做:

#If there is no file match 
RewriteCond %{REQUEST_FILENAME} !-f 
#Or a directory match 
RewriteCond %{REQUEST_FILENAME} !-d 
#Redirect alphanumeric strings to your custom page 
RewriteRule ^[a-zA-Z0-9_.]+$ /my/custom/page [R=301,L] 
#If there are symbols, send to 404 
RewriteRule .* /error.shtml [R=301,L] 
+0

我測試了一下,它也可以工作,但它是否執行Peter的代碼沒有的任何操作? – Cris

+0

我們在同一時間發佈。所以選一個! –

+0

我做到了。謝謝您的回覆! – Cris

相關問題