我有一個基於php的系統(稱爲OJS)安裝在我的主機上。它使用SMARTY創建頁面。我有一個網址,如網頁: http://example.com/ojs/index.php/foo如何做.htaccess URL重寫以包含URL中的index.php?
我希望能夠在地址欄中鍵入http://example.com/ojs/foo和的.htaccess將添加的index.php到URL,並執行新的完整URL,這樣指數.php可以生成所需的頁面。
現在我在ojs文件夾的.htaccess文件中使用以下內容。
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
我也嘗試過很多其他的.htaccess語法和指令。但其中沒有一個可行。 當我在地址欄中輸入http://example.com/ojs/index.php/foo時,我得到了我想要的頁面。 當我進入http://example.com/ojs/foo(或OJS如http://example.com/ojs/blahbla或http://example.com/ojs/index.php/blahblahbla沒有定義任何頁)它顯示的主網頁http://example.com/ojs/
我做了一個測試,我想重寫規則,至少在做一些事情。我在文件index2.php(在ojs文件夾中)中創建了一個虛擬的php代碼,它反映了超全局值。對於這個測試我修改重寫規則,包括index2.php,我也得到如下結果:
- 爲地址:http://example.com/ojs/(如需要)沒有URL重寫做,因爲我沒有看到索引2的內容。 PHP
- 爲地址:http://example.com/ojs/anything我看到index2.php的這回聲以下值的內容:
$_SERVER['HTTP_HOST']: example.com $_SERVER['REQUEST_URI']: /ojs/anything $_SERVER[SCRIPT_NAME]: /ojs/index2.php $_SERVER['PHP_SELF']: /ojs/index2.php $_SERVER['REQUEST_METHOD']: GET $_SERVER['PATH_INFO']: $_SERVER['ORIG_PATH_INFO']: /anything __FILE__: /home/user/public_html/ojs/index2.php
誰能想到,爲什麼我的噸與index2.php工作,它不適用於index.php?
我的配置是否有幫助:
PHP版本29年3月5日, Apache的版本2.2.29, 主持人:交友,共享Linux主機,
我沒有進入主錯誤日誌或Apache配置文件。
非常感謝你,
謝謝。我試過了。但仍然無效。 – cybergeek654 2015-03-13 18:19:46
嘿,你需要給.htaccess文件的讀取權限。 – 2015-03-14 18:34:32
它有644許可。 – cybergeek654 2015-03-15 11:22:29