一尘不染

如何使用.htaccess创建友好的URL?

php

.htaccess我很难受。我想为我正在工作的网站创建友好的URL。

基本上我想将其转换为:

http://website.com/index.php?ctrl=pelicula&id=0221889
http://website.com/index.php?ctrl=pelicula&id=0160399&tab=posters

变成这个:

http://website.com/pelicula/0221889/
http://website.com/pelicula/0221889/posters/

如果以后需要,我也想知道如何将文章标题添加到URL的末尾(如下所示)(我正在使用PHP):

http://website.com/pelicula/0221889/the-article-name/
http://website.com/pelicula/0221889/the-article-name/posters/

注意:Stackoverflow方法对我也有好处,例如,此问题的网址为:

http://stackoverflow.com/questions/3033407/htacces-to-create-friendly-urls-help-needed

但是您可以在id后面放任何东西,它也可以工作。像这样:

http://stackoverflow.com/questions/3033407/just-anything-i-want

我使用了一些自动Web工具来创建.htacces文件,但该文件无法正常工作。因此,我请求您的帮助。

如果您可以推荐.htacces最佳做法和建议,我也将很高兴。

编辑:根据我在这里得到的一些答案,我把这个:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/([^/]+)/([^/]+)/?([^/]*)/?$ index.php?ctrl=$1&id=$2&tab=$3 [QSA,L]
</IfModule>

但是我收到默认主机“找不到页面”错误。

我也尝试过:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/(\d+)/([^/]+)/?$ index.php?ctrl=$1&id=$2&tab=$3 [QSA,L]
    RewriteRule ^([^/]+)/(\d+)/?$         index.php?ctrl=$1&id=$2 [QSA,L]
    RewriteRule ^([^/]+)/?$               index.php?ctrl=$1 [QSA,L]
</IfModule>

这也不起作用。它带我到默认的404.php页面。

mod_rewrite已启用并且正在工作。

帮帮我!


阅读 269

收藏
2020-05-26

共1个答案

一尘不染

在文档根目录中,http://website.com/我将放置如下htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

然后在您的PHP脚本中,您可以根据需要操纵$_GET['url']变量:

$path_components = explode('/', $_GET['url']);
$ctrl=$path_components[0];
$id=$path_components[1];
$tab=$path_components[2];
2020-05-26