.htaccess 使用 php slug 重定向

Posted

技术标签:

【中文标题】.htaccess 使用 php slug 重定向【英文标题】:.htaccess redirect with php slug 【发布时间】:2016-03-02 15:45:52 【问题描述】:

我的重写代码是:

RewriteEngine on
RewriteCond %THE_REQUEST ^[A-Z]3,9\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^(.*)$ $1.php [NC,L]    

RewriteRule ^products/([a-z0-9_-]+)$ products.php?slug=$1

但是,这显示 products/slugname 重写规则的内部服务器错误。

我只在我的 slug id 中使用了小写字母、数字和破折号 (-)。

【问题讨论】:

htaccess 中还有其他规则吗? 当我在根目录中创建一个 empty 文件夹 products 时,它似乎可以工作,它应该这样工作吗? 是的,隐藏扩展的重写规则导致了这个问题。有没有办法可以在同一个 .htaccess 文件中同时使用两者 您的文件结构如何? /foo/index.php 还是 /foo.php? 它的 /filename.php 【参考方案1】:

试试这个:

RewriteEngine on
RewriteCond %THE_REQUEST /([^.]+)\.php [NC]
RewriteRule ^ /%1 [R,L]

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^([^/]+)/?$ /$1.php [NC,L]    

RewriteRule ^products/([a-z0-9_-]+)$ /products.php?slug=$1 [NC,L]

【讨论】:

你的 htaccess 在 root 中吗? 是的,它在根文件夹中,除了将 index.php 隐藏在索引文件的 url 中,其他一切都失败了。但是,我非常感谢你的帮助兄弟。

以上是关于.htaccess 使用 php slug 重定向的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 301 重定向问题

如何使用 htaccess 将带有参数的旧 url 重定向到新的 seo url

htaccess 301 重定向整个目录

使用 .htaccess 重定向 php 链接

php 301使用.htaccess重定向

使用 htaccess 从 index.php 重定向到 another.php 文件