gpt4 book ai didi

mod-rewrite - 如何使用 mod_rewrite 从 .htaccess 引用当前目录?

转载 作者:行者123 更新时间:2023-12-04 00:53:48 25 4
gpt4 key购买 nike

我想使用 mod_rewrite 来制作漂亮的 URL,但有一个单一版本的 .htaccess 文件,可用于服务器上的任何用户。

到目前为止,我有标准的漂亮 URL .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

理想情况下,我想要类似的东西
RewriteRule ^(.*)$     %{URL of this file's directory}/index.php/$1 [L]

这个文档会让我相信我想要的不是必需的:

Note: Pattern matching in per-directory context Never forget that Pattern is applied to a complete URL in per-server configuration files. However, in per-directory configuration files, the per-directory prefix (which always is the same for a specific directory) is automatically removed for the pattern matching and automatically added after the substitution has been done. This feature is essential for many sorts of rewriting - without this, you would always have to match the parent directory which is not always possible.



但是,无论我是否在 RewriteRule 的 index.php 前面放置了前导/,我仍然得到错误的结果。

这个,

http://server/test/stream/stream

变成

http://server/index.php/stream

不是

http://server/test/index.php/stream

当 .htaccess 文件在/test/中时。

最佳答案

我遇到了类似的问题,但发现简单地离开根 '/' 会导致我的测试 Web 服务器(Windows 上的 xampp)提供类似于以下内容的 URL:

http://localhost/C:/xampp/htdocs/sites/test/



不完美。我的解决方案是使用 RewriteCond 从 REQUEST_URI 中提取路径。这是从 URL 末尾删除不需要的“index.php”的示例:
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule index.php %1/ [r=301,L]

注意:“%1/”中的百分号,而不是美元符号。

%1-%9 从最后匹配的 RewriteCond 中获取模式,$1-$9 从 RewriteRule 中获取模式。

看:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

干杯:)

关于mod-rewrite - 如何使用 mod_rewrite 从 .htaccess 引用当前目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com