jki*_*und 3 php .htaccess mod-rewrite url-rewriting
所以我已经搜索了一段时间,但找不到任何关于如何创建漂亮的 url / seo / slug url 类型系统而不将所有内容发送到 index.php 或将内容移动到子文件夹的具体信息。
基本上,我正在制作一个网站,您目前可以访问像 movie.php?id=####/show.php?id=#### 这样的网址。理想情况下,我希望 url 为电影/#### 或电影/id/####(或我可以用来获取正确名称的名称的下一行)等。
有没有办法在没有单个 index.php 路由器的情况下做到这一点,或者我只需要重写我的所有文件以遵循这种风格?
您可以在 .htaccess 中创建重写规则,将电影 URL 路由到 movie.php,如下所示:
电影/123:
RewriteRule ^movie/(\d+)$ movie.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)
电影/ID/123:
RewriteRule ^movie/id/(\d+)$ movie.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)
电影/电影名:
RewriteRule ^movie/(\S+)$ movie.php?slug=$1 [L]
Run Code Online (Sandbox Code Playgroud)
电影/片名/片名:
RewriteRule ^movie/title/(\S+)$ movie.php?slug=$1 [L]
Run Code Online (Sandbox Code Playgroud)
组合电影/123/电影标题:
RewriteRule ^movie/(\d+)/(\S+)$ movie.php?id=$1&slug=$2 [L]
Run Code Online (Sandbox Code Playgroud)
编辑:添加了一个完整的 .htaccess 示例,需要最多 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¶m2=$2¶m3=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
^匹配从开始
$到匹配直到结束
?0 或 1 次出现
+1 次或多次出现
*0 次或多次出现
如果 url 规则不匹配并且文件不存在,那么它会将 url 路由到 index.php,但如果您不想要,可以删除最后一部分。