htaccess 重写规则 seo 友好不起作用
htaccess rewrite rule seo friendly not working
我想改变这个URL:
example.com/services-details.php?service_id=1
收件人:
example.com/services-details/1
这是 .htaccess
文件的代码
Options +FollowSymLinks -MultiViews
RewriteEngine On
#SEO FRIENDLY URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ services-details.php?service_id=
更新(固定)
第 1 步:
将此代码添加到您的 .htaccess
文件
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
# Redirect "/services-details.php?service_id=<num>" to "/services-details/<num>"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
# Rewrite "/services-details/<num>" back to "services-details.php?service_id=<num>"
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]
第 2 步:
在`HTML 元素
中添加此代码(在顶部)
<base href="/">
执行完以下步骤后,它应该可以工作了。
信息
不要忘记更改 link 名称 services-details
!
RewriteRule ^([a-zA-Z0-9_-]+)$ services-details.php?service_id=
RewriteRule
模式(即^([a-zA-Z0-9_-]+)$
)仅匹配一个path-segment,而请求的URL有两个,即。 /services-details/1
- 你需要匹配 service-details
.
我假设 service_id
始终是数字。
例如:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]
既然要重写,不妨抓取service-details
避免重复。
似乎不需要文件系统检查,因为我不认为 /services-details/<number>
匹配文件或目录?
请注意,如果您要更改现有的URL结构,其中旧的URL已被搜索引擎编入索引或被第三方链接到那么您还应该实施从旧 URL(即 /services-details.php?service_id=<number>
)到新 URL(即 /services-details/<number>
)的 301 重定向,以保持 SEO。
例如,以下“重定向”需要在现有的“重写”(以上)之前:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
需要 QSD
标志才能从重定向响应中删除原始查询字符串。
总结
您的 .htaccess
文件应如下所示,并结合了以下规则:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
# Redirect "/services-details.php?service_id=<num>" to "/services-details/<num>"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
# Rewrite "/services-details/<num>" back to "services-details.php?service_id=<num>"
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]
我想改变这个URL:
example.com/services-details.php?service_id=1
收件人:
example.com/services-details/1
这是 .htaccess
文件的代码
Options +FollowSymLinks -MultiViews
RewriteEngine On
#SEO FRIENDLY URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ services-details.php?service_id=
更新(固定)
第 1 步:
将此代码添加到您的 .htaccess
文件
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
# Redirect "/services-details.php?service_id=<num>" to "/services-details/<num>"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
# Rewrite "/services-details/<num>" back to "services-details.php?service_id=<num>"
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]
第 2 步: 在`HTML 元素
中添加此代码(在顶部)<base href="/">
执行完以下步骤后,它应该可以工作了。
信息
不要忘记更改 link 名称 services-details
!
RewriteRule ^([a-zA-Z0-9_-]+)$ services-details.php?service_id=
RewriteRule
模式(即^([a-zA-Z0-9_-]+)$
)仅匹配一个path-segment,而请求的URL有两个,即。 /services-details/1
- 你需要匹配 service-details
.
我假设 service_id
始终是数字。
例如:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]
既然要重写,不妨抓取service-details
避免重复。
似乎不需要文件系统检查,因为我不认为 /services-details/<number>
匹配文件或目录?
请注意,如果您要更改现有的URL结构,其中旧的URL已被搜索引擎编入索引或被第三方链接到那么您还应该实施从旧 URL(即 /services-details.php?service_id=<number>
)到新 URL(即 /services-details/<number>
)的 301 重定向,以保持 SEO。
例如,以下“重定向”需要在现有的“重写”(以上)之前:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
需要 QSD
标志才能从重定向响应中删除原始查询字符串。
总结
您的 .htaccess
文件应如下所示,并结合了以下规则:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# SEO FRIENDLY URL
# Redirect "/services-details.php?service_id=<num>" to "/services-details/<num>"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^service_id=(\d+)$
RewriteRule ^(services-details)\.php$ //%1 [QSD,R=301,L]
# Rewrite "/services-details/<num>" back to "services-details.php?service_id=<num>"
RewriteRule ^(services-details)/(\d+)$ .php?service_id= [L]