【问题标题】:How to remove file name & parameter from URL, but keep parameter value using .htaccess?如何从 URL 中删除文件名和参数,但使用 .htaccess 保留参数值?
【发布时间】:2017-09-02 21:15:30
【问题描述】:

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

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

注意:标签“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 内部服务器错误。这是错误日志:

[2017 年 4 月 7 日星期五 13:33:10.469218] [core:alert] [pid 4202] [client 47.11.122.64:52755] /var/www/html/workspace/broom/.htaccess:无效命令“RewriteEngine”,可能拼写错误或由模块定义 包含在服务器配置中 [Fri Apr 07 13:40:31.595944 2017] [核心:警报] [pid 4185] [客户端 47.11.122.64:53076] /var/www/html/workspace/broom/.htaccess:无效命令 'RewriteEngine',可能拼写错误或由未定义的模块 包含在服务器配置中

【问题讨论】:

  • 你能发布你尝试重写网址的内容吗?
  • 我已经更新了代码。请检查。我不知道如何实现它。在 Stackoverflow 上尝试了所有解决方案。
  • LoadModule rewrite_module modules/mod_rewrite.so

标签: .htaccess


【解决方案1】:

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

用这个替换你的 RewriteRule 行:

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

【讨论】:

  • 没有。它没有用。给出 500 内部服务器错误。
  • 请检查您的错误日志以获取有关 500 内部服务器错误的信息。
  • [Fri Apr 07 13:33:10.469218 2017] [core:alert] [pid 4202] [client 47.11.122.64:52755] /var/www/html/workspace/broom/.htaccess:无效的命令“RewriteEngine”,可能拼写错误或由服务器配置中未包含的模块定义 [Fri Apr 07 13:40:31.595944 2017] [core:alert] [pid 4185] [client 47.11.122.64:53076] /var/ www/html/workspace/broom/.htaccess:无效命令“RewriteEngine”,可能拼写错误或由未包含在服务器配置中的模块定义
  • 您的服务器由于以下原因之一导致此错误:1)您拼错了指令 RewriteEngine 尝试将其更改为 RewriteEngine on如果那是一个错字。 2)Mod-rewrite is not enabled ,检查你的服务器是否启用了mod-rewrite。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多