我正在使用重写规则重写htaccess上的网址,但是当我希望我的网站使用它时,我会陷入困境。 我希望我的链接看起来像:
mysite.com/section/this-is-the-title-of-this-section
我使用重写规则来获得这个:
mysite.com/section/?id=longalfanum 至 mysite.com/section/longalfanum
这很酷。但我检查了几个网站的URL,我发现他们从一开始就有友好的URL 所以我改变了网址上的网址:
mysite.com/section/longalfanum-the-title-of-the-section
现在我的链接不像以前那样工作。
我的htaccess看起来像:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
#this is for avoid extra /
RewriteCond %{REQUEST_URI} ^(.*?)(/{2,})(.*)$
RewriteRule . %1/%3 [R=301,L]
RewriteCond %{QUERY_STRING} !^$
RewriteRule .*/mysite.com/%{REQUEST_URI}? [R=301,L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
#this is my rule
RewriteCond %{QUERY_STRING} ^id=(\d+)$
RewriteRule /mysite.com/section/$1? [L]
RewriteRule ^section/(\d+)$ mysite.com/section/?id=$1
显然,这不起作用。我错过了一步吗?
答案 0 :(得分:0)
更改
RewriteRule ^section/(\d+)$ mysite.com/section/?id=$1
到
RewriteRule ^section/(.*)$ mysite.com/section/?id=$1
所以它匹配'section /'之后的任何内容(.*
),而不仅仅是数字(\d+
)
此外,您应该向所有当前没有它的RewriteRules添加[L]
标志,以提高效率。
答案 1 :(得分:0)
我用PHP的html看起来像这样:
<a href="section/?idN=<?= $rowNot[0]['id_new'];?>"></a>
Web浏览器中的看起来像:
mysite.com/section/?idN=alfanum
我的规则如下:
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule /mysite.com/section/$1? [L]
RewriteRule ^section/(.*)$ mysite.com/section/?id=$1
有了这个我只得到像mysite / section / nosensealfanum
这样的网址有可能通过htaccess获得新标题吗?或者我需要对从db中获取新内容的方式进行更改吗?
感谢