簡體   English   中英

干凈的URL mod_rewrite不起作用

[英]Clean url mod_rewrite not working

目前我有一個網址

www.mysite.com/folder/details.php?d=sample.com

我希望它像這樣改變

www.mysite.com/folder/sample.com

這是我的.htaccess文件,但無法正常工作:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ details.php?d=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ details.php?d=$1

我也嘗試過這個,但是它也不能正常工作:

RewriteEngine On
RewriteRule folder/([0-9]+) details.php?d=$1

這是我的網址鏈接php代碼:

<a href="details.php?d=<?php echo $var['var']; ?>"><?php echo $var['var']; ?></a>

我嘗試了在此站點中找到的一些答案,但仍然無法弄清楚自己在做什么錯。 任何人?

謝謝!

您需要一些條件來防止循環:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_.-]+)/?$ details.php?d=$1 [L]

您也可以使用/?將兩個規則組合為一個/? 最后將斜線設為可選。


為了將規則放置在文檔根目錄中,您需要將文件夾名稱添加到模式和目標中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/([a-zA-Z0-9_.-]+)/?$ /folder/details.php?d=$1 [L]

感謝您的評論@Jon Lin和@quasivivo,我找到了解決問題的方法,這是我的htaccess:

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

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

並且我還更改了我的網址鏈接代碼:

<a href="<?php echo $var['var']; ?>"><?php echo $var['var']; ?></a>

希望這對以后的人有所幫助。

暫無
暫無

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

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