php - 让 htaccess 忽略部分网址

标签 php apache .htaccess mod-rewrite seo

我有一个名为 car-details.php 的文件,它使用带有汽车注册详细信息的变量 id= 来填充页面。

我现在可以让这个重写规则生效

RewriteRule ^car-for-sale/(.*) car-details.php?id=$1 [NC,L]

但是我想要一个像这样的 url

/GV09LBX/Ford-car-something-etc

但出于某种原因,我无法使 url 的第二部分正常工作。我遵循了一些指南,以便将第二部分添加到下面的 url 示例中

RewriteRule ^car-for-sale/(.*)/(.*) car-details.php?id=$1&something=$2 [NC,L]

其中 something=$2 甚至没有被 car-details.php 文件使用,但我只想在 url 中包含汽车名称以用于 seo 目的。每当我尝试添加第二个正斜杠时,重写规则就会停止工作。有帮助吗?

下面是完整的 htaccess 文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^car-for-sale/(.*)/(.*) car-details.php?id=$1&something=$2 [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress



# Wordfence WAF
<IfModule LiteSpeed>
php_value auto_prepend_file '/home/shipley/public_html/wordfence-waf.php'
</IfModule>
<Files ".user.ini">
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from all
</IfModule>
</Files>

最佳答案

你必须在你的模式中使用 anchor :

RewriteRule ^car-for-sale/([^/]+)/([^/]+)/?$ car-details.php?id=$1&something=$2 [NC,L,QSA]

RewriteRule ^car-for-sale/([^/]+)/?$ car-details.php?id=$1 [NC,L,QSA]

关于php - 让 htaccess 忽略部分网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816752/

相关文章:

php - 如何在 Ubuntu 上安装 PHP pthreads 扩展?

apache - "SSL input filter read failed" Apache 和 443

apache - 升级到Apache 2.4.6后出现错误

Wordpress/htaccess - 允许访问子目录

apache - 301 通过 .htaccess 将查询字符串重定向到 SEO 友好的 URL

apache - 为什么我的 Markdown 文件没有被压缩?

javascript - 验证动态添加的数组输入 - jQuery Validate

php - Android 的 FCM 通知

php - php 是否在 'html body' 之前加载?

apache - 将动态页面和非 www 重写为 www (.htaccess)