如何使用Apache创建自定义URL解析器?

时间:2014-10-06 18:53:49

标签: apache url-rewriting web-config

我听说可以使用web.config文件完成此操作。我想这样做,例如,我的网址http://help.BHStudios.org/site可能会转到http://BHStudios.org/help.php?section=site,或者http://i.BHStudios.org/u3Hiu可能会重定向到存储在数据库中的其他网址,并使用哈希u3Hiu作为关键,或者如果出现问题并且内部文件结构像http://Kyli.BHStudios.org/http/bhstudios/v2/self/index.php那样暴露(GoDaddy服务器因任何原因而发生的事情),它会将其更改为其预期的URL {{ 1}}之前,用户已曝光。

由于我之前从未这样做过,你还能解释一下你为什么给出答案吗?

1 个答案:

答案 0 :(得分:3)

你的htdocs目录中的服务器httpd.conf或.htaccess文件中的一些Apache mod_rewrite rules将完成你想要的大部分工作。

RewriteEngine On
RewriteBase  /

# Default Rule - for non physical objects (not a file or directory): 
# Internally rewrite (user won't see the URL) to /index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]

#If the Browser request contains a .php, instruct the browser to remove it.
RewriteCond %{THE_REQUEST}      \.php      [NC]
RewriteRule ^/?(.*)\.php$       http://%{HTTP_HOST}/$1         [R=301,NC,L]

# Specific rule
RewriteRule ^/?site   /help.php?section=site 

实际文件系统对象的屏蔽效果不是很完美,而且略显无意义,因为用户只需右键单击并查看任何提供的页面上的源代码,即可获得实际的URL。