2014-10-26 17 views
2

我正面臨我的.htaccess的一個相當奇怪的行爲。每當我嘗試訪問通過mod_rewrite的重寫一個鏈接,我的.htaccess是指的根,而不是子目錄,我的工作我的文件夾結構看起來像這樣:
htdocs/ blog6/ .htaccess
我的.htaccess看起來像這樣:.htaccess在子目錄中始終指向根

Options +FollowSymLinks -MultiViews 

ErrorDocument 401 /core/error/401.php 
ErrorDocument 403 /core/error/403.php 
ErrorDocument 404 /core/error/404.php 
ErrorDocument 500 /core/error/500.html 

RewriteEngine on 
RewriteBase /blog6/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ /index.php?page=$1 [L] 

但每當我試圖通過重寫URL來訪問文件,我得到一個404錯誤和日誌說:

C:/xampp/htdocs/index.php' not found or unable to stat 

所以看起來像我的.htaccess要訪問該文件中的htdocs而不是使用子目錄。當我在我的rewriteRule中寫入/blog6時,一切正常,但爲什麼RewriteBase無法正常工作?如果是重要的,我在我的HTML中使用<base>

+0

你在瀏覽器中打開什麼網址導致這個404?我相信這個.htaccess在'/ blog6 /'目錄中? – anubhava 2014-10-26 17:47:11

+0

@anubhava是的,.htaccess在'/ blog6 /'中。我打開'http:// localhost/blog6/login',它應該是'http://localhost/blog6/index.php?page = login'的重寫形式。如果我在rewriteRule前加一個'blog6 /',它看起來像這樣:'RewriteRule ^([^ /] *)$ /blog6/index.php?page=$1 [L]'並且可以工作。這就是讓我感到困惑的地方,因爲rewriteBase沒有影響...... – Kommodore 2014-10-26 18:10:35

回答

1

RewriteBase前提是您提供的RewriteRule目標相對URL,這樣你的代碼更改爲:

Options +FollowSymLinks -MultiViews 

ErrorDocument 401 /core/error/401.php 
ErrorDocument 403 /core/error/403.php 
ErrorDocument 404 /core/error/404.php 
ErrorDocument 500 /core/error/500.html 

RewriteEngine on 
RewriteBase /blog6/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA] 
相關問題