【发布时间】:2021-12-26 01:17:41
【问题描述】:
我想使用 htaccess 删除文件夹名称来创建干净的 URL,并且我有多个文件夹(食物、健康、美容......)重写规则不起作用
site.com/food/one.php
TO
site.com/one.php
食物文件夹规则 重写引擎开启
<IfModule mod_rewrite.c>
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /food/$1 [NC,L]
</IfModule>
健康文件夹规则
<IfModule mod_rewrite.c>
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /health/$1 [NC,L]
</IfModule>
美容文件夹规则
<IfModule mod_rewrite.c>
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /buety/$1 [NC,L]
</IfModule>
只有一个规则可以正常工作(仅限顶级规则......无论它可能是什么)其余规则不行 工作,内部服务器错误 500
请帮帮我
【问题讨论】:
-
你的三个规则在它们匹配的内容上是相同的,所以第一个获胜。他们都说“无论输入什么,都前进到下一个文件夹”,但只能是其中一个。您需要在 htaccess 或 PHP 中找到一种方法来说明“诸如 a 之类的 URL 应该转到 food 文件夹,而诸如 b 之类的 URL 应该转到健康文件夹。“例如”是你的逻辑。在 htaccess 中更难做,所以我建议查看 PHP 路由
标签: php apache .htaccess mod-rewrite