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