使用.htaccess删除URL中的get参数

时间:2017-01-16 16:44:20

标签: php apache .htaccess url mod-rewrite

我的网址如下所示:www.example.com/?content=somefile.php

模式是:始终www.example.com/?content=,而不是像somefile.php这样的文件,有时还有一些获取参数。

有没有办法使用www.example.com/somefile.php代替www.example.com/?content=somefile.php

我已经尝试了以下内容:

RewriteEngine On
RewriteRule ^([^/]*)$ /?content=$1 [L]

但是我收到以下错误消息:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

请联系服务器管理员,[无地址]并通知   他们发生错误的时间,以及你可能做过的任何事情   可能导致错误。

     

有关此错误的详细信息可能在服务器错误中可用   日志中。

     

Apache / 2.2.14(Ubuntu)服务器,网址为www.example.com端口80

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用此规则来避免内部服务器错误:

RewriteEngine On

# if request is not for image/css/js files
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC]
# skip if we already have ?content= in URL
RewriteCond %{QUERY_STRING} !(^|&)content= [NC]
# rewrite to ?content=
RewriteRule ^([^/]+)/?$ ?content=$1 [L,QSA]

答案 1 :(得分:0)

尝试添加;

RewriteEngine On
RewriteCond %{QUERY_STRING} !(^|&)content= [NC] #taken from anubhava's code
RewriteRule ^([^/]*)$ /?content=$1 [L]

你不应该直接阅读?content 值,这可能很危险。