【问题标题】:How to remove specific subdirectories in .htaccess file如何删除 .htaccess 文件中的特定子目录
【发布时间】:2014-10-14 19:40:05
【问题描述】:

即使经过广泛的研究,我也无法解决以下重定向问题。我尝试了很多例子,但没有运气。

从此网址: http://www.example.com/store/product/name

我想得到: http://www.example.com/name

问题是唯一已知的字符串是“store”。其他字符串“产品”和“名称”可以包含字母、数字和“-”或“_”字符。

我正在现场网站和这个测试仪上测试它:htaccess.madewithlove.be

我使用的一个例子:

RewriteEngine On
RewriteBase /
RewriteRule ^store/([^/]+)/([^/]+) $2 [L,R=301]

这似乎适用于上述测试网站,但不适用于真实环境。我认为正则表达式有问题,第二个参数没有正确返回,或者我遗漏了其他内容。

我还应该提到,该网站在 Wordpress 上运行,并且在 .htaccess 文件中还有由 Wordpress 自动创建的以下部分:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

感谢您的帮助!

【问题讨论】:

  • 当您在浏览器中输入http://www.example.com/name 时,它会加载一切正常吗?
  • 是的,它确实可以正常加载。

标签: wordpress apache .htaccess mod-rewrite redirect


【解决方案1】:

在内部 WP 规则之前有这样的规则,即 redirect

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^store/([^/]+)/([^/]+) $2 [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2019-10-03
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2023-01-23
    相关资源
    最近更新 更多