.htaccess htaccess URL重写PHP的帖子和优惠

tzxcd3kk  于 2022-12-23  发布在  PHP
关注(0)|答案(2)|浏览(159)

我已经为我的问题寻找了很长一段时间的答案,我发现了很多想法,但我不能弄清楚它,并使其工作,因为我期望..
我有一个网站

  • “/索引. php”
  • “/邮政服务. php”

我想要的是重写网址,以便:重定向“/index.php”到“/index.php“文件夹中
以及:
将“/posts/slug-post-1/”重定向到“offers.php”,但仍然显示“/posts/slug-post-1/”,我将在其中拆分url以获取帖子的slug。
谢啦,谢啦
我试过的是:
第一个月
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
它实际上显示“/offers/”并重定向到“/offers.php”,但当我添加一个后插件,它不工作。
所以我也尝试过:RewriteRule ^posts/([^/]*)$ /posts.php?slug=$1 [L]
它只适用于ctrl+F5,而不是一个简单的刷新...我不明白为什么。这是相同的不同的刷子和计算机。

64jmpszr

64jmpszr1#

我会试试的:-)
将"/* index. php "、"/ index. php /"和"/ index */"重定向到"/"。

RewriteRule index(.*)$ / [NC, L]
    • 编辑**:我强烈建议你不要改变主文件夹中的index.php这样的重要文件的默认行为,否则会有不可预见的后果。

另一个是:

RewriteRule posts/slug-post-1(.*)$ offers.php [QSA, NC, L]

在您的示例中:
您的RewriteCond %{REQUEST_FILENAME}.php -f [NC]检查添加了. php的"requests filename"是否是一个真实存在的文件。
使用RewriteCond ${REQUEST_FILENAME} !-f确保目标文件不被跳过,尽管它已经存在。!-d将检查目录。
如果你想动态地添加插件到新目标,使用标志QSA,例如,用[QSA,NC,L]代替[NC,L]。在规则之前使用条件。

6uxekuva

6uxekuva2#

这确实是一个评论--但篇幅有限。
看起来好像你在尝试实现它之前还没有想清楚你要实现什么。
我想要的是重写网址,以便:重定向"/index.php "到"/index.php"文件夹中
我认为你需要做更多的搜索。Web服务器不提供目录,他们通常有很多机器来提供内容,当出现一个请求时,路径Map到一个目录,将其更改为一个文件,脚本或特殊的处理程序。
我猜想您可能希望将/、/index.php/和/index/重写为/index.php
但我怀疑您在这里要实现的还有更多-您还想处理您要匹配的模式之后的任何字符串,这在您尝试处理/posts时就暗示了。
所以看起来你好像在尝试实现2个前端控制器模式。实现一个前端控制器模式对你来说有点困难。同时实现2个前端控制器模式不太可能有好的结果,无论你最终实现什么都可能非常脆弱。你需要在/index.php中有一个路由器,这样才是处理/posts/requests的正确位置。
但这只是您需要解决的问题的 * 部分 *。让PHP代码拦截所有请求在CPU和内存方面相当昂贵(除非您在服务器上实现了非常好的缓存策略,并且它位于缓存反向代理之后)。

相关问题