簡體   English   中英

URL重寫規則在php中不起作用

[英]URL rewrite rule is not working in php

我正在使用 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]

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

但是這個重寫規則不起作用。 所以請幫助我如何制作短網址。

在確保RewriteEngine EnabledOn后使用此源

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

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

重寫后的 URL: http : //www.example.com/events/text-first

更新了 500 內部服務器錯誤

您的代碼保證會產生 500 個內部服務器錯誤,因為它會導致無限循環。 原因是您匹配的 URI 模式是:^events/([^/]*)$

在重寫之前和之后匹配您的 URL。 一旦達到最大允許的內部重寫限制,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]

試試這個代碼:

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

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

你可以看到有很多方法可以實現這個目標。

還有

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

會做的工作。 所以基本上,你的項目 url 的完整范圍是什么樣的?

比如你總是想打印參數嗎? 如果是,有時也是名稱還是值?

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

來自

    AllowOverride None

    AllowOverride All

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM