htaccess url重写(db访问)?
我有一个带有以下参数的网页。htaccess url重写(db访问)?
http://www.somesite.com/community_details.php?comm_id=233®ion_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并不特别适合编写守护进程,所以您可能希望以其他语言来执行此程序。
你不能。
你可以做的是有community_details.php
做数据库查询,然后调用die(header("Location: blahblahblah"));
。但是,那么你必须使用.htaccess和其他一切来处理它,所以根本不会这么做 - 取决于这些URL对你的重要性。
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®ion_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']中请求路径。
使用爆炸分解并从数据库中获取您的参数。
,几乎不会将DB值返回到.htaccess“用于URL重写”,右 – eis
马克city_id,我这样做 RewriteEngine叙述在 RewriteBase/ Options + FollowSymLinks RewriteMap examplemap txt:/ var/www/html/mysite/key_pair。txt RewriteRule community_details.php?(。*)$ {examplemap:$ 1} 现在我找不到页面。 这是钥匙对文本的样本 252格鲁吉亚/肯尼索/登陆肯尼索山 –
对不起,不是页面未找到它是这样的。 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 –
500内部服务器错误获取记录在服务器错误日志中的说明性原因。获得一个rewritemap的工作很棘手,你可能需要一段时间来玩。 –