使用htaccess清理URL

时间:2016-11-10 15:27:41

标签: php mysql .htaccess

我是这个论坛的新人,所以我需要帮助。我正在使用PHP / MySQL在我的网站上工作,并使用.htaccess

进行堆叠

所以有我的代码

<a href="namebook-'.$row['book_name'].'" class="btnmore">Review</a>

还有我的htaccess,

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^book/namebook-([a-zA-Z0-9.\/\-\?\&]+)\.php$ book/namebook.php?name=$1

使用代码我得到这样的URL: mywebsite.com/book/namebook-book1

所以我想得到像这样的干净网址:mywebsite / book / book1

2 个答案:

答案 0 :(得分:0)

听起来您只需要从网址的第一部分删除namebook吗?

即。改变这个:

<a href="namebook-'.$row['book_name'].'" class="btnmore">Review</a>

到此:

<a href="'.$row['book_name'].'" class="btnmore">Review</a>

答案 1 :(得分:0)

这里的关键是你的最后一次重写规则:

RewriteRule ^book/namebook-([a-zA-Z0-9.\/\-\?\&]+)\.php$ book/namebook.php?name=$1

您的重写规则是将您请求的值(与[a-zA-Z0-9.\/\-\?\&]+匹配的任何内容)发送到您的PHP脚本,但前提是您的网址与book/namebook-<variable>匹配 - 例如mywebsite/book/namebook-book1

要允许mywebsite/book/book1,您需要从重写规则的开头删除namebook-

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^book/([a-zA-Z0-9.\/\-\?\&]+)\.php$ book/namebook.php?name=$1