0
我試圖爲我的網站設置自定義重寫方案(http://panchr.me)。htaccess - 重寫參數路徑
這裏是我的.htaccess
:
RewriteEngine on
ErrorDocument 404 /404.php
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} repositories
RewriteRule ^(.+)repositories(.+) $1repositories?repo=$2 [nocase,last]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [nocase,last]
具體來說,我要重寫一些諸如http://panchr.me/repositories/some_name
到http://panchr.me/repositories?repo=some_name
。但是,如果我訪問此頁面,則會出現404錯誤。此外,剛剛訪問http://panchr.me/repositories
現在給了我一個500錯誤。
我該如何解決這個問題?
我的服務器結構如下:
.htaccess
# a few other files, not available to user
public_html/ # this is the DocumentRoot
index.php
repositories.php
# more files
是否可以(可選)匹配'repositories.php/some_name'?我試圖將RewriteRule作爲'RewriteRule ^([^ \。] +)(repositories)(?:\。php)?/([^ /] +)$ $ 1 $ 2.php?repo = $ 3 [NC,L]' ,但這並不能作爲一個論據。 (我不得不使用'([^ \。] +)',因爲我不能設置RewriteBase而不會搞亂另一個規則)。 – 2014-10-19 02:26:00
@RushyPanchal那麼'儲存庫'究竟在哪裏?也許如果你告訴我更多關於你的結構,我可以給你一個更好的答案。 '([^ \。] +)'匹配任何不是點的,你期望匹配什麼,會出現在'repositories'之前? **如果存在其他規則,使用'RewriteBase'弄亂了底層規則,將文件夾重定向到它們各自的'php' ** – Prix 2014-10-19 02:40:59
我更新了我的原始問題與服務器結構。基本上,'.htaccess'位於'repositories.php'的_parent目錄中。我的答案是「(?:\。php)?',它應該是'.php'的可選匹配項。我想重寫能夠做到這一點: 'panchr.me/repositories/test' - >'panchr.me/repositories.php?repo = test'(這個工程已經) 'panchr.me/repositories。 php/test' - >'panchr.me/repositories.php?repo = test'(這不起作用)。 – 2014-10-19 02:52:21