【发布时间】:2012-04-08 17:35:43
【问题描述】:
我希望实现以下在 Apache 下完美运行的功能。这样做是为了更好地对 URL 进行 SEO。
示例网址:
http://www.astrogyan.com/enter/indian_astrology_horoscope_chart_prediction.html
http://www.astrogyan.com/know_your_gemstone/gID-7/sani_planet_saturn_gemstone_blue_sapphire_neelam.html
我真正期待的是一个位置正则表达式来捕获根文件夹中的所有无扩展名 php 脚本,仅供 php-fptm 处理。
在上述所有 URL 中,“enter”、“know_your_gemstone”都是 PHP 脚本,后面是 PHP 为 SEO 生成的虚拟文件名。实际上“indian_astrology_horoscope_chart_prediction.html”文件名不存在。在 Apache 中,我使用以下内容拦截“enter / know_your_gemstone”等,并且从不关心文件名的其余部分:
DefaultType application/x-httpd-php
在上述 URL 的最后,“gID-7”用于将变量传递给脚本以显示适当的内容。虽然此 URL 显示的是动态内容,但该 URL 经过精心设计,看起来像一个静态 URL,可以很容易地被搜索引擎索引。这个变量解析已经在 PHP 中完成,与 Nginx 无关。我相信这部分已经被称为漂亮的网址/干净的网址。
我想知道在 NGINX 下如何最好地实现它?我需要正则表达式来处理根文件夹中的所有脚本(扩展名较少的文件),并忽略这些脚本名称之后的内容。如果这样的文件不存在,则考虑检查 URL 的其余部分,希望它是一个有效的目录,后跟一个文件名。此目录部分是可选的,对我目前的需求不是必需的。
我有一个运行 ubuntu 的 VPS,我在其中安装了带有 php-fpm 的 nginx,对于像 index.htm / index.php 这样的普通 URL,设置工作正常。我不是正则表达式写作的专业人士,因此我被困在这个时刻。我在网上搜索了很多nginx博客/论坛,但没有找到合适的解决方案。
我使用的是最新开发版本的 Nginx v1.1.17 和 php v5.3.6.13。我还编译了其他模块,例如更多标头、缓存清除、内存缓存等。
对此的任何帮助将不胜感激。提前谢谢...
【问题讨论】:
-
考虑修改并简化您的问题。