如何将PHP文件用于多个URL

时间:2013-09-16 02:31:29

标签: php html wordpress

我希望有一个PHP文件来处理子目录中的多个URL。

例如,我的网站是http://www.startingtofeelit.com/。我想要一个名为playlist.php的php文件,当用户转到http://www.startingtofeelit.com/playlist/101或者转到http://www.startingtofeelit.com/playlist/142等时会处理这个文件。我希望能够删除该号码(101 ,在我上面的示例网址中使用142作为变量(播放列表ID),因此我可以显示正确的播放列表。

我知道我可以在我的播放列表子目录中创建index.php并使用GET这样的http://www.startingtofeelit.com/playlist?id=102变量并以此方式获取ID,但这看起来更加邋is喜欢以其他方式知道如何做到这一点。

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

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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>