传递GET变量时出现PHP htaccess错误

传递GET变量时出现PHP htaccess错误,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,在使用.htaccess文件以SEO友好的方式重写url时,我在PHP中尝试访问GET变量时遇到了一个问题 使用像www.example.com/blog/index.php?article=foo-bar这样的URL,我可以正确加载页面,但是当我使用像www.example.com/blog/article/foo-bar/这样的URL时,我得到了指向索引页面的重定向 下面是我的.htaccess文件注意,我正在使用规则删除URL中的index.php Options +FollowSymLi

在使用.htaccess文件以SEO友好的方式重写url时,我在PHP中尝试访问GET变量时遇到了一个问题

使用像www.example.com/blog/index.php?article=foo-bar这样的URL,我可以正确加载页面,但是当我使用像www.example.com/blog/article/foo-bar/这样的URL时,我得到了指向索引页面的重定向

下面是我的.htaccess文件注意,我正在使用规则删除URL中的index.php

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
顺便说一句,当我点击一个指向某个类别的链接时,我得到了完整的文章列表,比如主页,而不是仅限于所选类别中的一篇文章


感谢您的帮助,您需要使用或进行测试:

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

您需要使用或进行测试:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
试试这些规则:

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] 
试试这些规则:

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] 

您可以检查apacheerror.log并查看错误是什么吗?这个.htaccess在哪里?我在var/logs/apache2中的error.log是空的,我试图在apache config中将loglevel设置为info,但在conf文件中仍然是空的,我得到了这行ErrorLog${apache_log_DIR}/error.log,我正在使用Cloud9,所以可能vfs被配置为将这些日志存储在其他路径中?好,没有500个错误,但仍然不起作用,每一个环节都把我送到了家。您可以在这里尝试。您的.htaccess是否位于博客文件夹中?如果是,您可以尝试我更新的规则扫描您检查Apache error.log并查看错误是什么吗?这个.htaccess在哪里?我在var/logs/apache2中的error.log是空的,我试图在apache config中将loglevel设置为info,但在conf文件中仍然是空的,我得到了这行ErrorLog${apache_log_DIR}/error.log,我正在使用Cloud9,所以可能vfs被配置为将这些日志存储在其他路径中?好,没有500个错误,但仍然不起作用,每一个环节都把我送到了家。您可以在这里尝试。您的.htaccess是否位于博客文件夹中?如果是,你能试试我更新的规则吗