我在使用.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文件实现网址重写。如果我在上述步骤中犯了任何错误,请纠正我。提前谢谢。
答案 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]