传递GET变量时PHP htaccess错误

问题描述:

当使用.htaccess文件在SEO友好样式中重写URL时,尝试访问PHP中的GET变量时出现问题。传递GET变量时PHP htaccess错误

使用像www.example.com/blog/index.php?article=foo-bar这样的URL可以正确加载页面,但是当我使用诸如www.example.com/blog/article/foo-酒吧/我有一个重定向到索引页面。

这里是我的.htaccess文件(请注意,我用的规则去除的index.php在URL中)

Options +FollowSymLinks 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /blog/index.php?/$1 [L] 
RewriteRule ^article/([a-zA-Z0-9]+)/$ /blog/index.php?article=$1 [QSA,L] 
RewriteRule ^category/([a-zA-Z0-9]+)/$ /blog/index.php?category=$1 [QSA,L] 
RewriteRule ^adm/$ /blog/index.php?page=admin [QSA,L] 

至于说其他工作岗位的网友发帖我这个修正,但会产生错误500,我没有收到关于500错误的任何回复。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] #This cause the error 500 
RewriteRule ^article/([a-zA-Z0-9]+)/$ /blog/index.php?article=$1 [QSA,L] 
RewriteRule ^category/([a-zA-Z0-9]+)/$ /blog/index.php?category=$1 [QSA,L] 
RewriteRule ^adm/$ /blog/index.php?page=admin [QSA,L] 
RewriteRule ^(.*)$ /blog/index.php?/$1 [L] # This too cause an error 500 in this position 

通过当我点击refered一个类别的链接,而不是仅仅限制在一篇文章中所选类别我有文章像网页的完整列表的方式。

谢谢,帮助

尝试下列规则:

RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} . [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^article/([\w-]+)/?$ /blog/index.php?article=$1 [QSA,L,NC] 

RewriteRule ^category/([\w-]+)/?$ /blog/index.php?category=$1 [QSA,L,NC] 

RewriteRule ^adm/?$ /blog/index.php?page=admin [QSA,L,NC] 

RewriteRule ^(.*)$ /blog/index.php?/$1 [L,QSA] 
+0

我得到一个错误500太 – andreaem

+0

你可以检查Apache的error.log中并查看错误是什么?这个.htaccess位于哪里? – anubhava

+0

我的error.log位于var/logs/apache2是空白的,我试图设置日志级别信息在Apache配置,但仍然是空的 – andreaem

您需要测试或:

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L]