php - 如何编写多个 .htaccess 重写规则?
问题描述
我有多个php
这样的页面:
http://www.example.com/si/article.php?id=122&nTitle=my-title
http://www.example.com/si/post.php?id=352&pTitle=my-post-title
我想将它们重写为
http://www.example.com/si/122/my-title
http://www.example.com/si/352/my-post-title
我在我的.htaccess
文件中尝试了不同的东西,但没有结果。请告诉我如何使用多个规则。如果我在.htaccess
文件中使用一条规则,则它适用于一个 php 页面,如下所示:
RewriteRule ^([\s\w-]+)/(.*)/?$ article.php?id=$1&nTitle=$2 [L,QSA,NC]
现在我尝试了多个页面:
<ifModule mod_rewrite.c>
Options -Indexes
RewriteEngine on
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^/([\s\w-]+)/(.*)$ /article.php?id=$1&pName=$2 [L,QSA,NC]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^/([\s\w-]+)/(.*)$ /post.php?id=$1&pName=$2 [L,QSA,NC]
</IfModule>
谁能给我一个关于如何使用这个功能的建议.htaccess
?
谢谢你。
解决方案
您可以使用 url 之类的:(看起来彼此不同)
http://www.example.com/arical-si/122/my-title
http://www.example.com/post-si/352/my-post-title
然后重定向到:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$0
RewriteRule ^artical-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ article.php?id=$1&nTitle=$2 [L]
RewriteRule ^post-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ post.php?id=$1&nTitle=$2 [L]
</IfModule>
推荐阅读
- react-apollo - useQuery 什么时候触发重新渲染?
- texinfo - 尝试进行 TexInfo PDF 输出时出现错误
- git - Gitlab-ci.yml 配置
- typescript - Typescript自省类型到字符串
- python - 通过调用行名而不是行位置来显示特定行的所有列值
- bash - 打印第三个字符是数字的行
- vue.js - 如何在 vue cli 中修改 index html?
- php - 从 tawk 的 webhook 中抓取其他字段的值到
- mysql - 在 laravel 中显示基于数量的 product_id 总和
- flutter - 无法加载资产