htaccess url重写(db访问)?

问题描述:

我有一个带有以下参数的网页。htaccess url重写(db访问)?

http://www.somesite.com/community_details.php?comm_id=233&region_id=2&city_id=40

我想改成了这个

http://www.somesite.com/virginia/fairfax/some_community/

如何调用数据库返回的区域,城市,社区在.htaccess的URL重写?

这不是特别有效,但你可以使用RewriteMap来使用外部txt/dbm /程序让mod_rewrite根据结果进行查找和重写。

RewriteMap pretty-community prg:/path/to/some/shell/script 

RewriteRule community_details.php?(.*) ${pretty-community:$1} 

从community_details.php剧本拍摄的查询字符串将被传递到指定的外部脚本它的标准输入,和脚本通过标准输出的重写URL回复。

请注意,脚本在Apache首次启动时开始ONCE,然后本质上运行在守护进程模式下,每次执行重写都与Apache通信。由于PHP并不特别适合编写守护进程,所以您可能希望以其他语言来执行此程序。

+0

马克city_id,我这样做 RewriteEngine叙述在 RewriteBase/ Options + FollowSymLinks RewriteMap examplemap txt:/ var/www/html/mysite/key_pair。txt RewriteRule community_details.php?(。*)$ {examplemap:$ 1} 现在我找不到页面。 这是钥匙对文本的样本 252格鲁吉亚/肯尼索/登陆肯尼索山 –

+0

对不起,不是页面未找到它是这样的。 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 –

+0

500内部服务器错误获取记录在服务器错误日志中的说明性原因。获得一个rewritemap的工作很棘手,你可能需要一段时间来玩。 –

你不能。

你可以做的是有community_details.php做数据库查询,然后调用die(header("Location: blahblahblah"));。但是,那么你必须使用.htaccess和其他一切来处理它,所以根本不会这么做 - 取决于这些URL对你的重要性。

+0

OK,但我怎么写我的.htaccess接受参数来查看正确page..so它理解233的2 some_community REGION_ID是弗吉尼亚州和40等于费尔法克斯 –

我想;你不能

如果您的链接是http://www.somesite.com/virginia/fairfax/some_community/

你可以用htacces更改为http://www.somesite.com/community_details.php?comm_code=samo_community&region_code=virginia&city_code=fairfax

,并采取规范的ID从数据库在PHP中使用。

阅读,这是一个良好的开端: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap

你创建你的模式正则表达式,然后写一个外部的Perl/PHP脚本的任何一个实现针对MySQL表哈希查找并返回到Apache。

好吧,这很容易。
只是将所有虚拟请求路由到php scritp,它将查询数据库。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?request=$1 [QSA,L] 

并且您将在$ _GET ['request']中请求路径。

使用爆炸分解并从数据库中获取您的参数。

+0

,几乎不会将DB值返回到.htaccess“用于URL重写”,右 – eis