Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP参数替换URL/gallery/art/paris?_Php_Apache_Rewrite - Fatal编程技术网

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

用PHP参数替换URL/gallery/art/paris?,php,apache,rewrite,Php,Apache,Rewrite,可能重复: 我相信这已经被问过很多次了,但我不知道我在寻找什么,所以如果有人能给我指出正确的地方,那将是非常棒的 基本上,我有一个页面“gallery.php”,目前它从目录(第一部分是硬编码的)加载图像,然后输入url?a=art/paris,因此完整的url是gallery.php?a=art/gallery 有没有一种方法可以修改apache和/或我的php代码,以便用户可以键入/gallery/art/paris/或/gallery/art/paris并获得相同的结果?(在/galle

可能重复:

我相信这已经被问过很多次了,但我不知道我在寻找什么,所以如果有人能给我指出正确的地方,那将是非常棒的

基本上,我有一个页面“gallery.php”,目前它从目录(第一部分是硬编码的)加载图像,然后输入url?a=art/paris,因此完整的url是
gallery.php?a=art/gallery


有没有一种方法可以修改apache和/或我的php代码,以便用户可以键入
/gallery/art/paris/
/gallery/art/paris
并获得相同的结果?(在/gallery/之后的任何内容都是我需要的参数。

这就是你要找的吗

RewriteEngine on
RewriteRule ^gallery/([^/\.]+) gallery.php?a=$1 [L]
或者你可以更具体一些:

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

这就是你要找的吗

RewriteEngine on
RewriteRule ^gallery/([^/\.]+) gallery.php?a=$1 [L]
或者你可以更具体一些:

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

请尝试将其放入您的.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]

请尝试将其放入您的.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]

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

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

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

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

这几乎是我所需要的,但它与/art/paris不起作用。它只通过/art作为参数。我需要它通过/art/paris作为参数。你太棒了。非常感谢!(1)这三个重写秒会使它变慢,而且没有必要。(2)它也会导致/art/gallery/foo/bar/temp/test/任何东西也起作用。(3)这一个有很多重复内容的问题。无论如何,请更正我的答案:),这将反过来为这个页面上的未来访问者提供一个很好的答案。这几乎是我需要的,但它不适用于/art/paris。它仅传递/art作为参数。我需要它通过/art/paris作为参数。你太棒了。非常感谢你!(1) 这三个重写秒会使速度变慢,而且是不必要的。(2) 它还将使/art/gallery/foo/bar/temp/test/任何东西也起作用。(3) 这一个有很多重复的内容问题。无论如何,请更正我的答案:),这将反过来为这个页面上的未来访问者提供一个很好的答案。