我希望有一个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上,但我不认为这会以任何方式产生影响。
答案 0 :(得分:2)
嗯,单靠PHP就无法做到这一点。
这些模块背后的基本思想是从一个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>