簡體   English   中英

使用 apache 中的 .htacces 文件清理 url 重寫

[英]Clean url rewriting using .htacces file in apache

我有一個網站,我在那里寫博客...在我的 blog.php 頁面上,我有來自不同類別的帖子。 當用戶點擊一個鏈接時,它會被重定向到帶有$_GET['title']變量的 /blog-details.php 頁面。

我試過的

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

#remove .php from all pages
RewriteRule ^([^\.]+)$ $1.php [NC]

#blog/title-here
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]

最后一行給了我類似的東西

xyz.com/blog-details?title=hello-world

我想要實現的是

xyz.com/blog/hello-world

不喜歡

xyz.com/blog-details?title=hello-world

謝謝,期待解答。

處理 .htaccess 文件時必須考慮的一件重要事情是,您必須檢查路徑是目錄還是文件,然后繼續執行操作。

我使用了您的代碼並且它運行正常,但只是添加了 -f 和 -d 檢查以確保這不會影響其他頁面。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

#remove .php from all pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]

#blog/title-here
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]

要測試您的 .htaccess 文件和一些虛擬 URL,我強烈建議您查看 MadeWithLove

https://htaccess.madewithlove.be/

這將使您擁有一個測試輸入 URL,並查看是否獲得了正確的輸出 URL(您的服務器將讀取的實際 URL)。


話雖如此,我建議您研究未來項目和自我開發的路由。 我建議檢查的框架是 PHP 的無脂肪框架 (f3)。 它非常容易上手,您可以在 2 天內學會它,並且通過包含路由、ORM、全局變量、簡化的 SQL 查詢以及許多其他本質上讓您成為 PHP 開發人員的功能,節省了大量開發時間,而不是框架開發人員。

使用以下方法:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog/([0-9a-zA-Z_=-]+)$ blog-details.php?title=$1 [NC]
</IfModule>

然后你可以在頁面上訪問像 $_GET['title'] 這樣的標題。

暫無
暫無

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

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