如何删除文件名和来自网址的参数,但使用.htaccess保留参数值?

时间:2017-04-07 13:04:21

标签: .htaccess

当前网址: http://broom.xyz/index.php?tag=C/santa

目标网址 http://broom.xyz/C/santa

  

注意:Tag' C / santa'是一个单一的动态值   它可以改为像F / fanta'或者' M / Manta'。

我的代码:

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^([^/]*)$ /index.php?tag=$1 [L]

此代码生成500内部服务器错误。这是错误日志:

  

[Fri Apr 07 13:33:10.469218 2017] [core:alert] [pid 4202] [客户   47.11.122.64:52755] /var/www/html/workspace/broom/.htaccess:无效的命令' RewriteEngine',可能拼写错误或由模块定义   包含在服务器配置中[Fri Apr 07 13:40:31.595944 2017]   [core:alert] [pid 4185] [客户47.11.122.64:53076]   /var/www/html/workspace/broom/.htaccess:命令无效   ' RewriteEngine',可能拼写错误或由模块定义   包含在服务器配置中

1 个答案:

答案 0 :(得分:1)

您的规则模式与uri C / Santa 不匹配,但匹配 CSanta 这是因为您排除了 / 在您的模式中 ^([^ /] *)。你需要修复它,以便它可以接受uri中的任何字符。

将RewriteRule行替换为:

RewriteRule ^(.+)$ /index.php?tag=$1 [L]