【发布时间】:2020-12-08 14:56:01
【问题描述】:
我有一个带有 WordPress 的站点,例如 http://example.com/ 和 CodeIgniter 在子目录中,例如 http://example.com/drinking-water-database/
CodeIgniter URL http://example.com/drinking-water-database/developer 工作正常。
我想从 URL 中删除 drinking-water-database。表示http://example.com/developer 将显示http://example.com/drinking-water-database/developer 的内容。我已经写了 htaccess 但它不工作。
# 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
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^developer
RewriteRule "^developer/(.*)/$" "drinking-water-database/index.php?/developer/$1" [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我已经尝试了所有可能的模式。即使我只尝试了重定向规则来使开发人员链接与波纹管 htaccess 一起使用。但是http://example.com/developer 显示的是 404。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule "^developer/(.*)/$" "drinking-water-database/index.php?/developer/$1" [L,R=301]
</IfModule>
【问题讨论】:
-
嗯,
developer显然与^developer/(.*)/$的模式不匹配,这实际上让您感到惊讶吗? -
我尝试了不同的模式。例如:
RewriteRule developer "drinking-water-database/index.php?/developer/ [L]" drinking-water-database/index.php?/developer/或RewriteRule (.*) "drinking-water-database/index.php?/developer/" [L] -
您为什么要尝试进行外部重定向?如果您希望浏览器地址栏中的 URL 停留在
/developer/,那么这需要进行内部重写。 -
如果不尝试专门重写此内容,
http://example.com/drinking-water-database/index.php?/developer/是否会首先显示所需的内容? -
我正在尝试进行内部重定向。
http://example.com/drinking-water-database/index.php?/developer/这个 URL 也是 CodeIgniter 的有效 URL。
标签: php wordpress .htaccess codeigniter