在PHP

时间:2015-12-08 09:24:55

标签: php apache .htaccess mod-rewrite

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

现在的样子:

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

和我想要的方式:

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

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

注意:在网站的根文件夹中安装了一个开放式购物车,根文件夹中没有.htaccess文件,我只是将.htaccess文件放入/payment/子文件夹。当然,我测试了将.htaccess文件放入根文件夹,但仍然得到相同的错误。

这是我用过的测试代码之一:

RewriteEngine on
RewriteBase /payment/

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

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

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

  

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

     

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

2 个答案:

答案 0 :(得分:2)

  

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

命令前面有一些不可见的字符:else if(bfact = true) { b = factorial(a); display.setText(a+" ! = "+b); } 。删除它们,或者,如果您看不到它们,请重写文件以确保它们已消失。

答案 1 :(得分:0)

试试这个:

RewriteEngine on
RewriteBase /payment

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