2014-03-25 29 views
1

我對我的博客有以下規則設置,它們似乎工作得很好。htaccess URL重寫不符合第一條規則

Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/(index\.php|(modules|css|files|fonts|ico|img|js)/) 

RewriteRule ^([^/]*)/page/([^/]*)$ /framework/?p=$1&page=$2 [L] 
RewriteRule ^([^/]*)/search/([^/]*)$ /framework/?p=$1&search=$2 [L] 
RewriteRule ^([^/]*)/search/([^/]*)/page/([^/]*)$ /framework/?p=$1&search=$2&page=$3 [L] 

所以我感到自信,並希望爲基本頁面添加一條規則。

,所以我說這個規則

RewriteRule ^([^/]*)$ /framework/?p=$1 [L] 

,使我的htaccess的文件現在看起來是這樣

Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/(index\.php|(modules|css|files|fonts|ico|img|js)/) 

RewriteRule ^([^/]*)$ /framework/?p=$1 [L] 
RewriteRule ^([^/]*)/page/([^/]*)$ /framework/?p=$1&page=$2 [L] 
RewriteRule ^([^/]*)/search/([^/]*)$ /framework/?p=$1&search=$2 [L] 
RewriteRule ^([^/]*)/search/([^/]*)/page/([^/]*)$ /framework/?p=$1&search=$2&page=$3 [L] 

但如果我去http://www.example.com/framework/blog我得到了500 Internal Server Error,如果我拿出線去http://www.example.com/framework/blog/page/2它加載我的第二頁沒有任何問題。

我不知道我在做什麼錯?任何意見,將不勝感激。

+0

可能是$ 1位找不到嘗試重寫規則^([^ /] *)$ /框架/ [L] –

+0

我不能肯定我理解你的思路。如果它的規則沒有'?p = $ 1',現在它會如何'p = blog' |添加了你建議的這一行,但仍然出現了'500'錯誤。 –

+0

需要添加這兩行'RewriteCond%{REQUEST_FILENAME}!-f'和'RewriteCond%{REQUEST_FILENAME}!-d' –

回答

1

您可以使用:

Options +FollowSymLinks 

RewriteEngine On 
RewriteBase /framework/ 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/page/([^/]*)$ ?p=$1&page=$2 [L,QSA] 
RewriteRule ^([^/]+)/search/([^/]*)/page/([^/]*)$ ?p=$1&search=$2&page=$3 [L,QSA] 
RewriteRule ^([^/]+)/search/([^/]*)$ ?p=$1&search=$2 [L,QSA] 

RewriteRule ^([^/]+)/?$ ?p=$1 [L,QSA]