我試圖重寫我的網址在遞歸與mod_rewrite的
localhost/myapp/view/something or
localhost/myapp/crud/something
形式
localhost/myapp/view.pl?view=something or
localhost/myapp/crud.pl?action=something
所有其他請求應被這樣映射: 本地主機/ MYAPP /登錄 localhost/myapp/login.pl
我試過用這個.htaccess文件,但我得到了一個遞歸如果我啓用了最後的 RewriteRule,我不明白爲什麼,因爲我用RewriteCond保護它。 這是我第.htacces mod_rewrite的文件,所以請耐心等待與我同在)
RewriteEngine On
RewriteRule ^/?crud/([^/]*)$ /myapp/crud.pl?action=$2 [QSA]
RewriteRule ^/?view/([^/]*)$ /myapp/view.pl?view=$2 [QSA]
RewriteCond $1 !^/(view|crud)$
RewriteRule ^/?([^/]*)$ /myapp/$1.pl [QSA]
更新:
我刪除了前導/並添加[L]標誌,現在我得到以下錯誤Apache的錯誤.LOG:
[Mon Jul 09 11:55:33 2012] [error] [client 127.0.0.1] File does not exist: /srv/http/myapp/myapp
新文件:
RewriteRule ^crud/([^/]*)$ myapp/crud.pl?action=$2 [L,QSA]
RewriteRule ^view/([^/]*)$ myapp/view.pl?action=$2 [L,QSA]
RewriteCond $1 !^(view|crud)$
RewriteRule ^([^/]*)$ myapp/$1.pl [QSA]
檢查出mod_rewrite標誌 - http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteflags也許[L]會幫助你。 – hovanessyan 2012-07-09 09:27:13
這是一次令人印象深刻的火焰嘗試。 :-)'.htaccess'規則不需要前導'/?'。同上放棄替代品上領先的'/'。 (請閱讀「每個目錄」語法)。同樣,cond regexp應該是'!(view | crud)'。加上[L]標誌。 – TerryE 2012-07-09 09:38:07
好吧,我擺脫了領先的/並添加了[L]標誌,現在我在error_log中獲得這個:/ srv/http/myapp/myapp – zbenjamin 2012-07-09 10:01:17