简体   繁体   English

使用htaccess清理URL

[英]Clean URL with htaccess

I am new on this forum, so i need help. 我是这个论坛的新手,所以我需要帮助。 I'm working on my website with PHP/MySQL and I stack with .htaccess 我正在使用PHP / MySQL创建网站,并使用.htaccess进行堆栈

So there is my code 所以有我的代码

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

And there is my htaccess, 还有我的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

And with code I get URL like this: mywebsite.com/book/namebook-book1 通过代码,我得到如下URL:mywebsite.com/book/namebook-book1

So I want to get clean URL like this: mywebsite/book/book1 所以我想获得像这样的干净URL:mywebsite / book / book1

Sounds like you just need to remove namebook from the first part of the URL? 听起来您只需要从URL的第一部分中删除namebook

ie change this: 即更改此:

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

to this: 对此:

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

The key here is your last rewrite rule: 关键是您的最后重写规则:

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

Your rewrite rule is sending your requested value (anything that matches [a-zA-Z0-9.\\/\\-\\?\\&]+ ) to your PHP script but only if your URL matches book/namebook-<variable> - eg mywebsite/book/namebook-book1 . 您的重写规则会将您请求的值(与[a-zA-Z0-9.\\/\\-\\?\\&]+匹配的任何值)发送到PHP脚本,但book/namebook-<variable>是您的URL与book/namebook-<variable>匹配-例如mywebsite/book/namebook-book1

To allow mywebsite/book/book1 you need to remove namebook- from the start of your rewrite rule: 要允许mywebsite/book/book1 namebook- ,您需要从重写规则的开头删除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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM