gpt4 book ai didi

php - .htaccess/php url 重写没有路由?

转载 作者:可可西里 更新时间:2023-11-01 00:59:11 25 4
gpt4 key购买 nike

所以我已经搜索了一段时间,但找不到任何关于如何在不将所有内容发送到 index.php 或将内容移动到子文件夹的情况下创建漂亮的 url/seo/slug url 类型系统的具体信息。

基本上我正在制作一个网站,您目前可以访问像 movie.php?id=####/show.php?id=#### 这样的 url。理想情况下,我希望 url 为 movie/#### 或 movie/id/####(或者我可以用来获取正确名称的行尾)等。

有没有办法在没有单个 index.php 路由器的情况下做到这一点,或者我是否只需要重写我的所有文件以遵循这种风格?

最佳答案

您可以在 .htaccess 中创建重写规则,将电影 URL 路由到 movie.php,如下所示:

电影/123:

RewriteRule ^movie/(\d+)$ movie.php?id=$1 [L]

电影/id/123:

RewriteRule ^movie/id/(\d+)$ movie.php?id=$1 [L]

电影/电影标题:

RewriteRule ^movie/(\S+)$ movie.php?slug=$1 [L]

电影/标题/电影标题:

RewriteRule ^movie/title/(\S+)$ movie.php?slug=$1 [L]

组合 movie/123/title-of-movie:

RewriteRule ^movie/(\d+)/(\S+)$ movie.php?id=$1&slug=$2 [L]

编辑:添加了一个完整的 .htaccess 示例,用于 1 需要最多 2 个额外的可选参数,如果 url 不是电影,则回退到 index.php。

Options -Indexes
IndexIgnore */*

Options FollowSymLinks
AddDefaultCharset utf-8

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^movie/([^/]+)/?([^/]*)/?([^/]*)$ movie.php?param1=$1&param2=$2&param3=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]
</IfModule>

^ 从头开始​​匹配
$ 匹配到结束
? 出现 0 次或 1 次
+ 出现 1 次或多次
* 出现 0 次或多次

如果 url 规则不匹配且文件不存在,那么它会将 url 路由到 index.php,但如果你不想要它,你可以删除最后一部分。

关于php - .htaccess/php url 重写没有路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com