2016-08-03 70 views
0

.htaccess文件:htaccess的重寫不會在某些頁面的工作

我有以下htaccess文件(這是很短):

RewriteEngine on 
Options +FollowSymLinks 
RewriteBase/

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_]+)/?$ index.php?page=$1 [L] 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_]+)/(.+)/?$ index.php?page=$1&params=$2 [L] 

我認爲這是很容易理解:如果一個文件不存在,那麼url被重寫。

問題:

一個「錯誤」的文件夾或文件不存在,因此應rewrited。但是,當我嘗試訪問url.local/error/404不起作用,但url.local/error的作品。

也許是Apache的問題?

編輯:

摘要:

  • http://url.local/dir工作
  • http://url.local/dir/subdir工作
  • http://url.local/dir/subdir/subdir工作
  • http://url.local/error工作
  • http://url.local/error/subdir不工作

回答

1

也許有問題與Apache?

不,沒有Apache問題。問題是你的正則表達式不匹配/但你的輸入有一個。

有這樣說:

RewriteEngine on 
Options +FollowSymLinks 
RewriteBase/

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

RewriteRule ^(\w+)/(.+)/?$ index.php?page=$1&params=$2 [L] 

RewriteRule ^(.+?)/?$ index.php?page=$1 [L,QSA] 
+0

你的答案似乎是正確的,但仍然沒有工作,同一個Apache 404錯誤。這很奇怪,因爲'url.local/error'可以工作,但'url.local/error/400'不是 – dimasdmm

+0

順便說一下,我在我的筆記本電腦中使用了一個虛擬主機(請參閱我正在寫'url.local') ,但我不認爲這是問題。 – dimasdmm

+0

'http:// url.local/error/xxx' – dimasdmm