我有一个网站,里面有一些这样的页面:
然后
现在我用标签菜单简化了网站,我只有
现在我希望尝试访问:example.com/cats-foo1.php 的人被重定向到:example.com/cats.php 而不是获得 404 无论如何,也许使用 htaccess?
这可能就是你要找的:
RewriteEngine on
RewriteRule ^/?cats-.+.php$ /cats.php [R=301]
为此,您需要在 http 服务器中启用重写模块。您应该将它放在 http 服务器主机配置中。如果您决定使用动态配置文件 ( .htaccess
),您需要先启用它们的解释(请参阅AllowOverride
官方文档中的指令)。
然而,我建议更进一步并沿模式使用 URL https://example.com/cats
,因此没有.php
像现在标准那样的尾随。为此,您需要一些额外的内部重写规则:
RewriteEngine on
# external redirect from /cats-foo.php to /cats
RewriteRule ^/?cats-.+\.php$ /cats [R=301]
RewriteRule ^/?cats\.php$ /cats [R=301]
# internal rewrite
RewriteRule ^/?cat$ /cats.php [END]
这再次可以概括:
RewriteEngine on
# external redirect from /cats-foo.php to /cats
RewriteRule ^/?(\w+])-.+.php$ /$1 [R=301]
# internal rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(\w+])$ /$1.php [END]
如果您在使用该规则的情况下遇到 http 状态 500,则您可能运行的是非常旧版本的 apache http 服务器。您会在 http 服务器错误日志文件中找到抱怨该END
标志的条目。在这种情况下,将其替换为L
标志并重试。
您可能需要调整这些线路,我们不知道您的具体情况。但是上面应该让你开始阅读你使用的工具的文档,你可以从这里开始:http : //httpd.apache.org/docs/current/mod/mod_rewrite.html
还有一个一般提示:您应该始终更喜欢将此类规则放置在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess
样式文件)。众所周知,这些文件容易出错,难以调试,而且确实会降低服务器的速度。它们仅在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商)或如果您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦) )。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句