我只是想用htaccess隐藏我网站的网址/wordpress/
(http://example.com/wordpress/
)(我不想更改真实网址,因为我会丢失所有社交媒体共享数据)。我在根目录中使用以下htaccess:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+wordpress/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^wordpress/)^(.*)$ /wordpress/$1 [L,NC]
它适用于我网站的所有页面(例如,如果我转到example.com/wordpress/post/
,它会直接显示example.com/post/
)。但我的主页有问题。它仍然显示为example.com/wordpress/
。我无法找到隐藏/wordpress/
的方法。你能救我吗?
更多信息:
我还在/ wordpress /子文件夹中有以下默认值.htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:0)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+wordpress/([^\s]+) [NC]
为了捕获/wordpress/
(实际上是WP站点的根目录)的请求,您需要更改此指令中的 CondPattern 以允许0个或更多尾随字符(即。*
)。目前,它正在寻找一个或多个(即+
),它排除了裸目录。换句话说:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+wordpress/([^\s]*) [NC]
大概有其他&#34; WordPress&#34;您的.htaccess文件中的指令正在路由请求。指令的顺序很重要,因此仍然可能存在冲突。
但是,正如评论中所述,您应该考虑在WordPress中正确更改URL,然后将旧URL(使用&#34; wordpress&#34;目录)重定向到新URL(不使用&#34; wordpress ).htaccess。在不更改WP中的URL结构的情况下,您网站上的每个内部链接都将导致外部重定向。