htaccess 2 mod_rewrite

Posted

技术标签:

【中文标题】htaccess 2 mod_rewrite【英文标题】: 【发布时间】:2012-11-05 03:41:15 【问题描述】:

我是 .htaccess 的初学者,谁能帮我解决这个问题?

//我的.ht访问代码

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /alumini/profile.php?username=$1

//上面我可以重定向url

localhost/alumini/profile.php?username=name

本地主机/铝/名称

但我也想将 loacalhost/alumini/index.php 隐藏到 loacalhost/alumini

简单地说……

我想要一个 htaccess 代码来隐藏索引页面,我还需要转换

localhost/alumini/profile.php?username=name

本地主机/铝/名称

【问题讨论】:

【参考方案1】:

您的第一个请求是重写,而不是重定向。你的第二个是重定向。对于重写,以下规则应该可以解决问题(未经测试):

RewriteRule ^localhost/alumini/([a-zA-Z]+)$ /alumini/profile.php?username=$1

括号内的正则表达式匹配一个或多个大写或小写字母,没有别的,匹配的值被传递给$1。您可能需要根据用户名的格式更改正则表达式。

对于 index.php 重定向(删除存在的 index.php):

Redirect 301 /alumini/index.php http://localhost/alumini

301 代表页面已经永久移动,并且对于 SEO 来说更好,因为只有非 index.php 页面会被索引。

【讨论】:

【参考方案2】:
RewriteRule ^localhost/alumini/([a-zA-Z0-9]+)$ /alumini/profile.php?username=$1
RewriteRule ^localhost/alumini$ /alumini/index.php

【讨论】:

您的第二条规则不会阻止人们访问 alumni/index.php - 它需要被重定向。重写只是意味着访问 alumni/ 的人将显示 alumni/index.php 无论如何默认都会发生。 谢谢你帮了大忙:D

以上是关于htaccess 2 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 htaccess 重定向循环 2

htaccess 2 mod_rewrite

Apache 2.4 .htaccess 文件不拒绝访问

.htaccess 未在 Ubuntu 14.04 (Apache 2.4.7) 中加载

.htaccess 关于 xampp 2 问题

Apache 2.4 .htaccess - 将所有请求指向 index.html,但有一个例外