【问题标题】:URL rewrite rule is not working in phpURL重写规则在php中不起作用
【发布时间】:2016-11-28 15:22:41
【问题描述】:

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

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

我想要以下网址: www.example.com/events/text-first

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    来自

        AllowOverride None
    

        AllowOverride All
    

    【讨论】:

      【解决方案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]
      

      【讨论】:

      • 它显示 500 错误,我正在为我的域使用共享主机。
      • @Quynh 我尝试了您的代码并收到以下错误:内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。请通过 webmaster@example.santosh.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。服务器错误日志中可能提供有关此错误的更多信息。此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。
      • 现在,没有显示错误,但没有任何反应.. 表示相同的 url 显示。要添加的另一点可能很重要,我正在使用域的子目录,我想在其中使用 url 就像我的主域是 test.com,在 text.com 中我创建了我的网站 example.com,我想在其中使用重写.
      • @SantoshKhatri 现在它是否有效,兄弟。它将与子域相同。只需编写新的相同 .htaccess 并放入确切的目录。
      • @QuynhNguyen - 不,它不起作用。什么都没有发生。
      【解决方案3】:

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

      还有

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

      会做这项工作。那么基本上,您的项目 url 的全部范围是什么样的?

      您是否总是想打印参数?如果是,有时也是名称还是值?

      【讨论】:

      • 显示 500 错误,我正在使用共享托管服务器,所以可能会影响这个吗?
      • 不知道托管服务器的规格很难说。无论如何,您可以使用它来检查和生成:generateit.net/mod-rewrite/index.php
      【解决方案4】:

      试试这个代码:

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

      将此添加到您的 .htaccess 文件中

      【讨论】:

      • 显示 500 错误,我正在使用共享托管服务器,所以可能会出现这种影响。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2011-07-17
      • 2013-07-06
      相关资源
      最近更新 更多