0

我想要一个 PHP 文件来处理子目录中的多个 URL。

例如,我的网站是http://www.startingtofeelit.com/。我想要一个 php 文件,比如说,当用户访问http://www.startingtofeelit.com/playlist/101或者如果他们访问http://www.startingtofeelit.com/playlist/142playlist.php时会处理该文件。我希望能够剥离数字(在上面的示例 url 中为 101、142)以用作变量(播放列表 ID),这样我就可以显示正确的播放列表。

我知道我可以index.php在我的播放列表子目录中创建一个并使用http://www.startingtofeelit.com/playlist?id=102GET之类的变量并以这种方式获取 ID,但这看起来更草率,我想成为能够知道如何以另一种方式做到这一点。

我的网站是建立在 WordPress 上的,但我认为这不会产生任何影响。

4

2 回答 2

2

好吧,你不能单独使用 PHP 来实现这一点。

  • 如果你使用 Apache,你可以使用 .htaccess
  • 如果你使用 IIS,你可以使用 URL Rewrite

这些模块背后的基本思想是从一个 URL 映射到另一个 URL。例如:您想从

http://www.startingtofeelit.com/playlist/142 =>
http://www.startingtofeelit.com/playlist.php?id=142

您可以用正则表达式表达 URL 映射。例如,在 .htaccess (Apache) 中。你可以这样写

RewriteRule    ^playlist/([0-9]+)/?$    playlist.php?id=$1

请注意,您的网站目录中需要有 .htaccess 文件。由于您使用的是 Wordpress,因此您存在 .htaccess 的可能性很高。您可以简单地将该行代码附加到现有的 .htaccess

下面是正则表达式的解释:

^playlist/      # any URL start with playlist/
([0+9]+)        # following by number, and store it as $1
/?$             # end with or without /

映射到

playlist.php?id=$1  # where $1 is taken from the matched number from our pattern.
于 2013-09-16T02:45:42.907 回答
2

这通常以类似于您已经尝试过的方式处理。但是,通常使用重写脚本以便您的应用程序接受一个干净的 URL,例如:

http://www.startingtofeelit.com/playlist/142

...并为您的应用程序重新编写它:

http://www.startingtofeelit.com/playlist?id=142

例如,如果您使用的是 Apache Web 服务器并且安装并启用了 mod_rewrite 模块,您可以在 .htaccess 文件中使用以下代码段并使用您的 GET 参数,因为您已经知道该怎么做。其他流行的 Web 服务器具有独特的 URL 重写模块,可以让您做同样的事情。

<IfModule mod_rewrite.c>
RewriteEngine On
# Rewrite this:
# http://www.example.com/somepage/1
# ...into this:
# http://www.example.com/somepage?id=1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
于 2013-09-16T02:58:04.700 回答