modrewrite 如何实现重写

modrewrite 如何实现重写

我正在努力实现这件简单的事情......

我有一些静态页面应该像
www.domain.com/profile 等。问题是如何编写重写规则以便......

会有一些固定的重写,比如 /home

我希望每个存在的文件都不会被重写 www.domain.com/test.php 应该转到 test.php

最后,如果找不到,我希望将其重定向到 static.php?_.....

RewriteRule ^/home/?$ /index.php?__i18n_language=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/?$ /static.php?__i18n_language=$1     

这工作正常,但是如果我输入 index.php 或 test.php 或什至来自其他重定向的 mach,它会让我进入 static.php...请帮忙!

答案1

首先,你的

RewriteRule ^/home/?$ /index.php?__i18n_language=$1 [L]

正在使用参数($1)...但第一部分中没有任何内容定义该参数应该是什么。

第二部分

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/?$ /static.php?__i18n_language=$1 
  1. 缺少 [L],这是个好主意

  2. 使用请求 url 作为 i18n 的参数,这意味着它的工作方式如下:example.com/login/ -> /static.php?__i18n_language=login

您能否再举一些例子来说明您想要查询什么类型的 URL、您期望发生什么以及您看到发生了什么?

您可能想要使用 RewriteLog 指令来创建日志并尝试调试 mod_rewrite 问题。

相关内容