使用.htaccess将index.php重写为SEO友好URL的技术问询
Apache Rewrite 规则实现友好URL方案
方案一:保留原index.php文件
你之前的规则方向搞反了——要先把用户访问的友好URL内部重写到实际的index.php,再加上一条规则把直接访问index.php的请求外部重定向到友好URL,这样就能保证地址栏始终显示你想要的名称。
把下面的规则放到subfolder目录下的.htaccess文件里(如果没有就新建一个):
# 把友好URL内部重写到index.php RewriteRule ^more-readable-name-of-my-choosing$ index.php [L] # 如果用户直接访问index.php,重定向到友好URL RewriteCond %{THE_REQUEST} ^GET\ /folder/subfolder/index\.php RewriteRule ^index\.php$ /folder/subfolder/more-readable-name-of-my-choosing [R=301,L]
- 第一条规则:当用户访问
/folder/subfolder/more-readable-name-of-my-choosing时,服务器内部悄悄加载index.php,地址栏不变。 - 第二条规则:如果有人直接输入
/folder/subfolder/index.php,浏览器会被重定向到友好URL,避免暴露真实文件名。
方案二:重命名index.php为目标文件名
如果把index.php改名为more-readable-name-of-my-choosing.php,需要让访问/folder/subfolder/的请求自动跳转到这个新文件,同时不影响another-file.php这类文件的正常访问。
同样在subfolder目录的.htaccess里加规则:
# 当访问目录根时,重定向到新命名的文件 RewriteCond %{REQUEST_URI} ^/folder/subfolder/$ RewriteRule ^$ /folder/subfolder/more-readable-name-of-my-choosing.php [R=301,L]
这条规则只会匹配访问/folder/subfolder/的请求,把它跳转到你重命名后的PHP文件,其他文件(比如another-file.php)的正常访问不受任何影响。
内容的提问来源于stack exchange,提问作者Erich Mosier
相关产品推荐
相关产品推荐

