在.htaccess中使用-而不是(下划线)

在.htaccess中使用-而不是(下划线),.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我使用下面的代码将所有php文件访问到/it目录,而不指定扩展名,效果良好。换句话说,我可以访问http://www.mydomain.com/it/about.php 只是写http://www.mydomain.com/it/about. 当我尝试访问时也会发生同样的情况。 如何直接访问*http://www.mydomain.com/it/question_answers.php*还写http://www.mydomain.com/it/question-answers? 我在前面的代码下

我使用下面的代码将所有php文件访问到/it目录,而不指定扩展名,效果良好。换句话说,我可以访问http://www.mydomain.com/it/about.php 只是写http://www.mydomain.com/it/about.

当我尝试访问时也会发生同样的情况。 如何直接访问*http://www.mydomain.com/it/question_answers.php*还写http://www.mydomain.com/it/question-answers? 我在前面的代码下面写了floowing代码,但它似乎不起作用

Redirect 301 /question-answer http://www.mydomain.com/it/question_answer.php
因为如果我写http://www.mydomain.com/it/question-answer 浏览器尝试打开该页: http://www.mydomain.com/it/question-answer.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php

这篇文章的一个小摘要:

我有这一页*http://www.mydomain.com/it/question_answers.php* 在第一部分代码中,我可以使用链接获得它*http://www.mydomain.com/it/question_answers* 我想访问同样的页面也与以下内容http://www.mydomain.com/it/question-answers
谢谢

这应该适合您:

Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.mydomain.com/$1.php

RewriteRule it/question-answer\.php http://www.mydomain.com/it/question_answer.php [R=301,L]
我改变了两件事:我在第一条规则的新URL中删除了它。否则您将被重定向到it/it/ 我还在第二条规则中添加了\.php。我真的不知道为什么,但重写规则似乎取代了模式,而不是重定向。如果您的模式是it/question-answer,而真正的url是it/questions-answer.php,则不会替换.php

Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.mydomain.com/$1.php

RewriteRule it/question-answer\.php http://www.mydomain.com/it/question_answer.php [R=301,L]