使用多个值进行 Mod 重写

发布于 2024-11-09 11:50:47 字数 398 浏览 0 评论 0原文

我正在尝试做这样的事情......不知道我哪里出错了。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)^/(.*)^/(.*)$ /$1/$2.php?page=$3 [L,QSA]

基本上我希望能够放入 /item1/item2/item3 之类的内容并将这些值设置为 $1、$2 和 $3 等......

谢谢

I'm trying to do something like this...Not sure where I am going wrong.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)^/(.*)^/(.*)$ /$1/$2.php?page=$3 [L,QSA]

Basically I want to be able to put in something like /item1/item2/item3 and have those values in $1, $2, and $3 etc....

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扭转时空 2024-11-16 11:50:47

尝试使用 .+,而不是 .*。另外请务必考虑可能会有尾部斜杠:

RewriteRule ^/(.+)/(.+)/(.+)/$ /$1/$2.php?page=$3 [l,qsa]
RewriteRule ^/(.+)/(.+)/(.+)$ /$1/$2.php?page=$3 [l,qsa]

Instead of .*, try using .+. Also be sure to consider there may be a trailing slash:

RewriteRule ^/(.+)/(.+)/(.+)/$ /$1/$2.php?page=$3 [l,qsa]
RewriteRule ^/(.+)/(.+)/(.+)$ /$1/$2.php?page=$3 [l,qsa]
骄兵必败 2024-11-16 11:50:47

在 .htaccess 文件中使用以下代码:

Options +FollowSymlinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /$1/$2.php?page=$3 [L,QSA,NE]

Use following code in your .htaccess file:

Options +FollowSymlinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /$1/$2.php?page=$3 [L,QSA,NE]
高跟鞋的旋律 2024-11-16 11:50:47

当新的替换发生时
URL,该模块必须重新注入
URL进入服务器处理。成为
能够做到这一点需要知道什么
相应的 URL 前缀或
URL 基础是。默认情况下此前缀是
相应的文件路径本身。但
大多数网站的 URL 不是直接的
与物理文件名路径相关,所以
这种假设通常是错误的!
在那里你必须使用 RewriteBase
指令指定正确的
URL 前缀。

http://httpd.apache.org/docs/1.3/mod/mod_rewrite .html#RewriteBase

所以也许你必须设置RewriteBase。例如,您可以将其设置为根目录:

RewriteBase \

此外,您不能在模式中使用多个 ^,因为它表示“字符串的起始位置”。

When a substitution occurs for a new
URL, this module has to re-inject the
URL into the server processing. To be
able to do this it needs to know what
the corresponding URL-prefix or
URL-base is. By default this prefix is
the corresponding filepath itself. But
at most websites URLs are NOT directly
related to physical filename paths, so
this assumption will usually be wrong!
There you have to use the RewriteBase
directive to specify the correct
URL-prefix.

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteBase

So maybe you have to set RewriteBase. For example you can set it to the root directory:

RewriteBase \

Also, you can't use more than one ^ in your pattern as it means 'start position of the string'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文