2015-10-17 50 views
0

我目前Apache的經驗很少,而且我的.htaccess文件有問題。我的問題是:我如何正確地重命名這些文件,如下所示?根據http://www.htaccesscheck.com,我相信我的語法是準確的,但是當訪問這些頁面時,A:頁面將不會由於重定向循環而加載,或者B:頁面不會加載,但會重定向到錯誤的頁面。這裏是我目前這個目錄的.htaccess文件:如何用.htaccess重命名一部分網址?

RewriteEngine On 
RewriteBase /photos/ 

RewriteRule ^(.*)-(.*)$ archives.php?month=$1&year=$2 [L] 

RewriteRule ^(.*)$ catpost.php?id=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d [NC] 
RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L] 

任何幫助,非常感謝。

+0

'.htaccess'和'* .php'文件位於名爲'/ photos'的子目錄中嗎? –

+0

是@OlafDietsche – user3761911

+0

然後應該沒有無限循環。規則看起來是正確的,除了'catpost.php'吞噬每個請求。你能指定哪些請求是錯誤的,以及你在哪裏得到一個無限循環? –

回答

1

試試下面的代碼:

RewriteEngine on 
RewriteBase /photos/ 

RewriteRule ^([0-9]{1,2})-([0-9]{4})$ archives.php?month=$1&year=$2 [L] 

RewriteRule ^([0-9]+)$ catpost.php?id=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d [NC] 
RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L] 

此規則將檢查,如果:

  • 請求像你的AIN/11-1111,然後返回archives.php像YOURDOMAIN/111
  • 請求,然後返回catpost.php(可鍵入 任何數字)
  • 否則將返回viewpost

你有一些錯誤在你當前的.htaccess中,因爲你的第二條規則會得到第一條規則的結果。

順便說一下,您可以使用http://htaccess.madewithlove.be/逐步檢查發佈到您的重寫規則的內容。

+0

的語法相同非常感謝!你是一個動物! – user3761911

+0

很高興爲您效勞!我希望「動物」意味着什麼好:D –

+0

是的,不要擔心Lol – user3761911

0

一定要寫一個有效的模式
試試這個

RewriteEngine On 
RewriteBase /photos/ 

RewriteRule ^(.*?)-(.*?)$ archives.php?month=$1&year=$2 [L] 

RewriteRule ^(.*?)$ catpost.php?id=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d [NC] 
RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteRule ^(.*?)$ viewpost.php?id=$1 [QSA,L] 
+0

這與原來的規則有何不同? –

+0

這與我目前的.htaccess – user3761911