Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Apache 如何使用.htaccess将/wp admin/admin.php重写为/wp admin/something_Apache_.htaccess - Fatal编程技术网

Apache 如何使用.htaccess将/wp admin/admin.php重写为/wp admin/something

Apache 如何使用.htaccess将/wp admin/admin.php重写为/wp admin/something,apache,.htaccess,Apache,.htaccess,我正在尝试配置.htaccess,以便当有人导航到路径/wp admin/admin.php?page=something时,浏览器中会显示路径/wp admin/something,并提供/wp admin/admin.php?page=something中的内容 如果我导航到/wp admin/admin.php?page=something,则页面服务正确。但是,/wp admin/something不提供内容,而是显示我网站中的默认404页面 My.htaccess配置: <IfM

我正在尝试配置.htaccess,以便当有人导航到路径
/wp admin/admin.php?page=something
时,浏览器中会显示路径
/wp admin/something
,并提供
/wp admin/admin.php?page=something
中的内容

如果我导航到
/wp admin/admin.php?page=something
,则页面服务正确。但是,
/wp admin/something
不提供内容,而是显示我网站中的默认404页面

My.htaccess配置:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?wp-admin/?$ /wp-admin/admin.php?page=$1 [L]

RewriteBase /
ReWriteCond %{ENV:ENVIRONMENT} !^development$
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]
</IfModule>

RedirectMatch 301 ^/kundeoplysninger https://signup.kredslob.dk/kundeoplysninger
RedirectMatch 301 ^/mobilepay /

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^/?wp admin/?$/wp admin/admin.php?页面=$1[L]
重写基/
重写cond%{ENV:ENVIRONMENT}^发展$
重写cond%{HTTPS}=在…上
重写规则^/?(*)https://%{HTTP_HOST}/$1[R,L]
重定向匹配301^/kundeoplysningerhttps://signup.kredslob.dk/kundeoplysninger
重定向匹配301^/mobilepay/
#开始WordPress
#“开始WordPress”和“结束WordPress”之间的指令(行)为
#动态生成,只能通过WordPress过滤器修改。
#这些标记之间对指令的任何更改都将被覆盖。
重新启动发动机
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
当有人导航到路径
/wp admin/admin.php?page=something
,浏览器中将显示路径
/wp admin/something

这需要外部重定向。这对于已经独立键入(或跟随外部链接)到“旧”(
page=something
)URL的用户来说是可以的,但是任何内部链接都必须更新以指向所需的规范URL,即
/wp admin/something

重写引擎
指令之后立即添加以下内容:

# Redirect direct requests for "/wp-admin/admin.php?page=something" to "/wp-admin/something"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^page=([^&]+)
RewriteRule ^(wp-admin)/admin\.php$ /$1/%1 [QSD,R=301,L]
$1
反向引用包含从URL路径捕获的“wp admin”(仅保存重复),而
%1
反向引用包含从查询字符串捕获的“something”(在前面的
RewriteCond
指令中捕获)

从重定向响应中删除查询字符串需要
QSD
标志(Apache 2.4+)

有必要检查
REDIRECT\u STATUS
环境变量,以防止重写的请求(见下文)被重定向。只重定向来自客户端的直接请求

并且提供了来自
/wp admin/admin.php?page=something
的内容

在上述重定向之后,我们需要立即在内部将请求从请求的
/wp admin/something
重写回服务器理解的格式,即
/wp admin/admin.php?page=something

在上述重定向之后添加以下内容

# Rewrite "/wp-admin/something" back to "/wp-admin/admin.php?page=something"
RewriteRule ^(wp-admin)/([^.]+)$ $1/admin.php?page=$2 [L]

捕获正则表达式
([^.]+)
排除了点,因此它自然避免了形式为
admin.php
的匹配请求,从而防止了重写循环。另一种选择是避免重写映射到物理文件的请求,但文件系统检查相对昂贵,因此最好尽可能避免进行检查。

“当前,当我导航到任一端点时,都不会发生任何情况。”-您需要解决为什么
/wp admin/admin.php?page=something
无法正常工作-这似乎与您的
.htaccess
文件无关。(?)我更新了我原来的问题。
/wp admin/admin.php?page=something
端点工作正常,它是预期的一个不正常的端点。感谢您花时间编写一个全面的回复。我真的很感激!它很有魅力,解释得很好++