系統linux+php5.3
tp3.1.2
按照TP的手冊說修改 httpd.conf 的 mod_rewrite.so 模組分號
然後還有 AllowOverride None 將None改為 All (這個地方在httpd.conf裡面有5處,我都修改成了All,不知道是否是正確的,還是只是需要修改一處就可以了?)
URL_MODEL設定為2 這個在設定檔裡面也設定成了2,然後在寫一個 ..htaccess 放在網站的根目錄,內容如下
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
然後重新啟動httpd,結果提示 500 Internal Server Error ,開始我以為是我apache的問題,最後我看其他的網站又正常(這台linux有多個網站),最後把 .htaccess刪除以後開啟網站又恢複正常,如果在放.htaccess又出現問題,那就可以說明.htaccess有問題了,是不是這個裡面的內容有問題呢,還是需要php.ini在設定其他的呢
回複討論(解決方案)
RewriteEngine on#如果目錄存在就直接存取目錄不進行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果檔案存在,就直接存取檔案,不進行下面的RewriteRule.(不是檔案或檔案不存在就執行重寫)RewriteCond %{REQUEST_FILENAME} !-f#所有找不著實際路徑的檔案,統一交給index.php處理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
TP 自己就帶有 .htaccess
你看看這裡 http://blog.csdn.net/qq1355541448/article/details/21375407
RewriteEngine on#如果目錄存在就直接存取目錄不進行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果檔案存在,就直接存取檔案,不進行下面的RewriteRule.(不是檔案或檔案不存在就執行重寫)RewriteCond %{REQUEST_FILENAME} !-f#所有找不著實際路徑的檔案,統一交給index.php處理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
TP 自己就帶有 .htaccess
你看看這裡 http://blog.csdn.net/qq1355541448/article/details/21375407
我按照這個BLOG的地址設定了,也就是大概意思是 httpd.conf裡面要單獨設定,比如一個網站
LoadModule rewrite_module modules/mod_rewrite.so //我寫在這裡了, ServerAdmin webmaster@dt.e.com DocumentRoot /web/xx.com ServerName xx.com ErrorLog logs/errun-error_log CustomLog logs/acrun-access_log common
單獨一個網站就需要單獨開啟一個模組嗎,不能全域配置嗎,我按照這樣的修改以後在重新啟動httpd.啟動是可以,但是報了一個錯誤
然後問題依舊~
只要全域有一個就行了
我這修改以後網站根目錄沒有放.htaccess檔案,這樣提示,根目錄放了也是提示400 Bad Request
400 Bad RequestBad Request
Your browser sent a request that this server could not understand.
首頁是500,我剛才是直接存取的模組 顯示400,
然後在後面加 xx.com/index.php 訪問也不行了
只要全域有一個就行了
我找到原因了,是預設建立.htaccess的時候許可權問題,因為我是root登入的,所以建立這個檔案的許可權是ROOT,我有把它設定成
777的許可權,但還是一樣,剛才我試著修改成此網站的使用者組和使用者,然後重新整理就可以了。
謝謝徐版,