如何使用.htaccess文件重写URL?

时间:2016-04-27 06:15:12

标签: apache .htaccess mod-rewrite url-rewriting

我在使用.htaccess文件重写网址时遇到问题。我不知道正则表达式。我有很多博客,并使用在线重写规则生成器生成URL并粘贴在.htaccess文件中。但没有人工作。我在apache服务器的httpd.conf文件中启用了mod_rewrite模块。

我想重写下面的网址。

我在OS中开发了项目 - 带有Apache服务器的Win7。

http://localhost:81/quora/tamilnanban/innerpage.php?url=why-you-should-avoid-watching-porn-on-android-smartphones

http://localhost:81/quora/tamilnanban/why-you-should-avoid-watching-porn-on-android-smartphones

我当前的.htaccess文件包含以下代码:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^.*$ ./index.php
#RewriteRule ^url/([^/]*)\.html$ :81/quora/tamilnanban/innerpage.php?url=$1 [L]

RewriteRule ^/quora/tamilnanban/([^/]*)\.html$ /quora/tamilnanban/innerpage.php?url=$1 [L]

以上规则也行不通。请帮助我使用.htaccess文件实现网址重写。如果我在上述步骤中犯了任何错误,请纠正我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

要将/quora/tamilnanban/innerpage\.php\?url=foobar"转换为/quora/tamilnanban/foobar,您可以在/quora/tamilnanban/.htaccess中使用以下规则:

RewriteEngine on

#1)Redirect "/quora/tamilnanban/innerpage\.php\?url=foobar" to "/quora/tamilnanban/foobar"#
RewriteCond %{THE_REQUEST} /quora/tamilnanban/innerpage\.php\?url=(.+)\sHTTP  [NC]
RewriteRule ^ /quora/tamilnanban/%1? [L,R]
#2)The rule bellow will internally map "/quora/tamilnanban/foobar"" to "/quora/tamilnanban/innerpage\.php?url=foobar"#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)$ /quora/tamilnanban/innerpage\.php?url=$1 [L]