DirectAdmin Apache - .htaccess 重写

Posted

技术标签:

【中文标题】DirectAdmin Apache - .htaccess 重写【英文标题】:DirectAdmin Apache - .htaccess rewrite(s) 【发布时间】:2021-09-22 07:13:33 【问题描述】:

我在设置重写时遇到问题,希望有人知道答案。

这是我目前在 .htaccess 中使用的代码:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /point/to/dir/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(\d+/.*)$ https://domain.ext/point/to/dir/module/status.php?id=$1 [L,QSA]

客户端正在向服务器请求 domain.ext/point/to/dir/,应该重写为https://domain.ext/point/to/dir/module/status.php。

可能会在 /point/to/dir/ 请求的末尾添加查询,该查询应附加到 https://domain.ext/point/to/dir/module/status.php。 /point/to/dir/ 是服务器上不存在的位置。

无论我做什么,我都会不断收到内部服务器错误(不正确的 .htaccess 配置/语法)或 404 错误。希望有人能帮忙。

【问题讨论】:

欢迎来到 SO,感谢您在问题中添加您的努力。关于It is possible that a query is added to the end of the /point/to/dir/ request, which should be appended to https://domain.ext/point/to/dir/module/status.php. The /point/to/dir/ is a non-existing location on the server.,请务必提及您要在您的网址中添加哪个查询字符串? 我很抱歉。我的知识非常有限。任何东西都可以添加到 /point/to/dir/? .反斜杠 (dir/*) 之后的任何内容都应附加到 php*。 【参考方案1】:

使用您展示的示例,以下列方式保存您的 htaccess 规则文件。确保将路径从 point/to/dir 更改为实际路径(请勿将 / 放在它前面,否则将不起作用)。

这是假设你的 point/do/dir 也有模块文件夹和 index.php 在模块文件夹内。

确保在测试您的 URL 之前清除浏览器缓存。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /point/to/dir/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(point/to/dir)/(.*)/?$ https://domain.ext/$1/module/status.php?id=$2 [NC,L,QSA]


OR 如果你在同一个域名中,那么你不需要在重写的右边部分提到完整的 url,然后按照下面的方式,确保使用一次只能高于或遵循一项规则。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /point/to/dir/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(point/to/dir)/(.*)/?$ $1/module/status.php?id=$2 [NC,L,QSA]

【讨论】:

太棒了。到目前为止,这似乎有效。如果这对他来说是正确的解决方案,我将与客户讨论。绝对很棒。谢谢拉文德。 @jexos,您的欢迎、欢呼和快乐的学习。

以上是关于DirectAdmin Apache - .htaccess 重写的主要内容,如果未能解决你的问题,请参考以下文章

在 DirectAdmin 上安装 OpenLiteSpeed

如何使用 DirectAdmin 在 Debian 10 上启用 Brotli?

directadmin 中子域的自定义路径目录

DirectAdmin 更改 DocumentRoot

如何在Directadmin中启用/安装PHP exif?

HTA - 多HTA之间切换