我不确定基于URL重定向的最有效方法。我已经看到了接近我需要的htaccess的例子,但我根本不理解它背后的编程。这就是我需要发生的事情:
感谢编写此代码的任何帮助。
答案 0 :(得分:3)
你想要的东西可以像这样写:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule (.*) $1.html
首先我们打开重写引擎。然后是RewriteCond指令:如果该条件变为true,则将应用其后的单个RewriteRule。 RewriteCond的语法很简单:RewriteCond <subject> <regex pattern>
;如果模式与主题匹配,则条件将变为真。在我们的例子中,模式是名为REQUEST_URI的服务器变量,您可以从PHP熟悉它,它保存用户请求的URI。这里的模式是正则表达式\.html$
。 \这里是一个转义点的转义字符,你可能知道它在正则表达式中具有特殊含义(“匹配任何字符”); $符号表示行尾;的!否定整个表达式,因此如果跟随它的模式不匹配,则条件将为真。因此,RewriteCond行说:“如果请求的URI不以字符串.html结尾”。
然后是RewriteRule指令。其语法为RewriteCond <from> <to> [optional flags]
。 'from'部分是要匹配的正则表达式模式。 'to'部分是一个字符串,我们将重写原始查询。在我们的具体示例中,from是(.*)
:the。意思是“任何角色”,明星的意思是“任何时候”,所以我们基本上都在说“任意数量的任何角色”,这意味着我们想捕捉整个路径。我们把它放在paranthesis中,以便我们以后可以参考捕获的部分。然后我们将其重写为:$1.html
,其中$ 1指的是我们在“from”部分捕获的第一个字符串。
就是这样:当我们在地址栏中写“example.com/something”时,将会提供“example.com/something.html”页面。
当然这是非常基本的,它可以改进很多,更优雅和东西,但这应该让你开始。有很多有用的教程,文档也非常有用。