用PHP参数替换URL / gallery / art / paris?

时间:2012-10-26 16:39:57

标签: php apache rewrite

  

可能重复:
  Rewriting an arbitrary number of path segments to query parameters

我确信这已被多次询问,但我实际上并不知道我正在寻找什么,所以如果有人能够指出我会找到合适的地方那么棒。

基本上,我有一个页面“gallery.php”,目前从目录加载图像(第一部分是硬编码的),然后在你输入的网址中输入?a = art / paris,所以完整的URL是{ {1}}。

有没有办法可以修改apache和/或我的php代码,以便用户输入gallery.php?a=art/gallery/gallery/art/paris/并得到相同的结果? (/ gallery /之后的任何内容都是我需要的一个参数。

3 个答案:

答案 0 :(得分:3)

尝试将其放入.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F

RewriteRule ^gallery/([a-z-A-Z0-9\/]+)$ /gallery.php?a=$1 [NC]

答案 1 :(得分:1)

是的,有办法做到这一点。您需要在Apache服务器上安装并激活mod_rewrite。然后创建一个.htaccess文件,您可以在其中“告诉”Apache重写哪些URL并指定规则如何完成。所以基本上你需要这样的东西

RewriteEngine On
RewriteBase /
RewriteRule ^gallery/([^/\.]+)/([^/\.]+)$ gallery.php?a=$1/$2 [L,NC]

答案 2 :(得分:0)

这就是你要找的东西吗?

RewriteEngine on
RewriteRule ^gallery/([^/\.]+) gallery.php?a=$1 [L]

或者您可以更具体:

RewriteEngine on
RewriteRule ^gallery/([^/\.]+)/([^/\.]+) gallery.php?a=$1&b=$2 [L]