.htaccess htaccess重写URL:无法在数据库中找到相应的行

vyswwuz2  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(102)

我试图重写我的网址,用破折号替换所有空格。
到目前为止,我得到了以下htaccess文件:

RewriteEngine on

RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [R=301,DPI]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^archive/([^/]+)$ news?title=$1

RewriteRule ^cars/([^/]+)$ carbrands?brand=$1

假设我的数据库中一篇文章的标题是“This is a test”,那么使用我的htaccess文件,将生成的url是:

example.com/archive/This-Is-A-Test

但它无法在我的数据库中找到相应的文章,因为它正在寻找标题“这是一个测试”,而不是“这是一个测试”。
我怎样才能解决这个问题?

u0njafvf

u0njafvf1#

请按如下方式进行.htaccess:

RewriteEngine on

RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^(\S+)(?:\s|%20)+(\S+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^(\S+)(?:\s|%20)+(.*)$ /$1-$2 [R=301,DPI]

RewriteRule ^archive/([^/]+)$ news?title=$1 [L,QSA]

RewriteRule ^cars/([^/]+)$ carbrands?brand=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

article.php中的stop处添加以下行:

$title = str_replace ('-', ' ', $_GET['title']);

相关问题