【问题标题】:500 internal error on changing QUERY URL to SEO Friendly URL in PHP在 PHP 中将 QUERY URL 更改为 SEO 友好 URL 时出现 500 内部错误
【发布时间】:2015-12-08 09:24:54
【问题描述】:

我在我的网络主机的子文件夹中安装了一个 php 脚本,并且有一个查询字符串,我希望将其更改为对 SEO 友好的 URL。

现在的样子:

http://example.com/payment/index.php?link=AhYBksPI123

以及我想要的方式:

http://example.com/payment/AhYBksPI123/

我使用了一些.htaccess 规则,每次我得到 500 内部服务器错误。

注意:网站根目录下安装了open cart,根目录下没有.htaccess文件,我只是把.htaccess文件放到@987654325 @ 子文件夹。当然,我测试了将.htaccess 文件放入根文件夹,但仍然出现同样的错误。

这是我用来将其置于根目录的测试代码之一:

RewriteEngine on
RewriteBase /payment/

RewriteCond %{THE_REQUEST} /index(?:\.php)?\?link=([^\s&]+)\s [NC]
RewriteRule ^ %1/? [R=302,L,NE]

我不知道我做错了什么?!

我不知道这是否是有用的错误日志:

[2015 年 12 月 8 日星期二 12:44:11.722999] [core:alert] [pid 2871:tid 140185601808128] [客户端 5.161.54.254:60365] /path/to/root/payment/.htaccess:无效命令 '\xef\xbb\xbfRewriteEngine',可能拼写错误或由模块定义 不包含在服务器配置中

[2015 年 12 月 8 日星期二 12:21:18.328407] [core:alert] [pid 30874:tid 140185509488384] [客户端 5.161.54.254:46771] /path/to/root/.htaccess: 无效命令 '\xef\xbb\xbfRewriteEngine',可能拼写错误或 由未包含在服务器配置中的模块定义

【问题讨论】:

  • 错误500:读取服务器的错误日志。
  • 我没有访问服务器的权限。因为,我使用的是共享网络主机
  • @AfshinHaghighat — 如果您的共享主机非常糟糕,他们不会向您显示您的错误日志(这不太可能),那么您需要更好的主机。
  • 如果没有错误日志,这只是猜测。在您的 .htaccess 中对我来说看起来很奇怪的事情:以空格 (\s) 结束 RewriteCond,以 ^ 开始规则。
  • 看起来您在 .htaccess 中的命令前面有一些不可见的 utf8 字符。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

无效命令 '\xef\xbb\xbfRewriteEngine',可能拼写错误或由未包含在服务器配置中的模块定义

命令前面有一些不可见的字符:\xef\xbb\xbf。删除它们,或者,如果您看不到它们,请重写文件以确保它们消失。

【讨论】:

  • 你能提供一个代码让我实现我想要的吗?!现在,错误消失了,我收到该链接的 404 错误!!!
  • 我回答了你的500错误的问题。不工作的重写规则是一个不同的问题,你应该为它打开一个单独的问题。
  • 顺便说一句,错误日志是你的朋友。它会告诉你 apache 在哪里寻找它找不到的文件。
【解决方案2】:

试试这个:

RewriteEngine on
RewriteBase /payment

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?link=$1 [L,R=301]

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 2018-12-17
    • 2012-12-02
    • 2014-06-22
    • 2021-05-17
    • 2014-09-19
    • 2011-04-29
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多