2011-04-06 65 views
0

我使用PHP笨,它產生以下網址:Apache的mod_rewrite的清潔網址

http://my.domain.com/app/index.php?/admin/main/ 

的​​是多餘的,所以我用下面的重寫規則成功地將其刪除:

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

然而, ,我也想刪除/app部分,但是當我這樣做時,我得到一個500錯誤。這是否與代碼點火器相關 - 或者如何正確地重寫此規則(如果可能)?我試着用以下方法:

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ ./app\/index.php/$1 [L] 

謝謝!

+0

這是改寫在虛擬主機的配置或.htaccess文件? – whoughton 2011-04-06 23:34:03

+0

這是在一個.htaccess文件中。它應該移動到主配置?我有權訪問該框。 – John 2011-04-08 19:15:27

回答

2

不好意思,那個寫的htaccess對CI的一個真正的老辦法,如果htaccess的是在項目中只使用下面的通用htaccess的代碼的主目錄(這並不需要排除目錄與此類似的舊即

RewriteCond $1 !^(index\.php|images|robots\.txt) 

因此也更好,就像我說的萬能)

*它不會與目錄解決您的問題,但是這是在H CI的最佳途徑並且不需要每次添加說明文檔文件夾或其他東西時都要返回index.php。

真棒htaccess的:

# Customized error messages. 
ErrorDocument 404 /index.php 

# Set the default handler. 
DirectoryIndex index.php 

# Various rewrite rules. 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</IfModule> 
+0

非常感謝! – John 2011-05-21 05:10:54

0

嘗試增加rewritebase RewriteBase /Path/to/directory/DirectoryBelowApps/