URL重写规则在php中不起作用

时间:2016-07-25 10:18:46

标签: php apache .htaccess mod-rewrite url-rewriting

我正在使用godaddy托管和插件域名。我想把我的长网址设为短网址。

例如我的网址是: www.example.com/events/landing_event.php?url=text-first

我希望关注网址: www.example.com/events/text-first

为此我在.htaccess文件中使用以下重写URL

  

RewriteRule ^([a-zA-Z0-9 - /] +)$ events / landing_event.php?url = $ 1 [L]

     

RewriteRule ^([a-zA-Z0-9 - /] +)/ $ events / landing_event.php?url = $ 1 [L]

但是这个重写规则不起作用。 所以请帮助我如何制作简短的网址。

4 个答案:

答案 0 :(得分:2)

确认RewriteEngine EnabledOn

后,请使用此来源
RewriteEngine On
RewriteRule ^events/([^/]*)$ /events/landing_event.php?url=$1 [L]

原始网址: http://www.example.com/events/landing_event.php?url=text-first

重写的网址: http://www.example.com/events/text-first

更新了500内部服务器错误

  

您的代码保证会生成500内部服务器错误,因为它会导致无限循环。原因是您匹配的URI模式是:^ events /([^ /] *)$

     

在重写之前和之后匹配您的网址。一旦达到最大允许内部重写限制,Apache就会抛出500内部服务器错误并退出。

将您的代码更改为此

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^events/([^/]*)$ /events/landing_event.php?url=$1 [L,QSA,NC]

答案 1 :(得分:1)

试试这段代码:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /events/landing_event.php?url=$1 [L]

在.htaccess文件中添加此内容

答案 2 :(得分:0)

您可以看到有很多方法可以实现这一目标。

另外

RewriteEngine On
RewriteRule ^events/([^/]*)\.html$ /events/landing_event.php?url=$1 [L]

会做这个工作。基本上,您的项目网址的全部范围如何?

您喜欢打印参数吗?如果是,有时也是名称或值?

答案 3 :(得分:0)

较新版本的apache要求您更改/etc/apache2/apache2.conf上的AllowOverride

来自

    AllowOverride None

    AllowOverride All