[英]How To Make PHP Application To Use Actual URL's If Mod-Rewrite Is Disabled?
我正在一个PHP应用程序上,一切正常,唯一的问题是。
我启用了SEO友好网址,该网址将实际网址重写为虚拟网址(我知道你们都知道)
例如:hxxp://www.website.com/index.php?page = about-us至hxxp://www.website.com/page/about-us/
我要实现的是,如果SEO URL的/ Mod Rewrite被禁用,则用户应该能够访问直接/实际的URL。
简而言之,如果启用了Mod-Rewrite,则Web应用程序应自动使用SEO友好URL,否则将使用默认URL。
您将必须使用检查mod_rewrite是否可用或更可能是config值的函数替换所有出现的链接。 然后它将返回适当的链接。
getLink("?page=about-us")
如果Apache不理解您的规则,请使用<IfModule>避免破坏其他.htaccess指令和500个内部服务器错误。 还添加一个非重写重写(在所有其他重写之前);
<IfModule mod_rewrite.c>
RewriteEngine On
#The next rule does no rewriting, but sets en environmental variable.
RewriteRule .* - [E=RewriteCapable:On]
</IfModule>
在您的文件中(存储为设置或检查生成/输出网址的位置):
if(isset($_SERVER['RewriteCapable'])){
//make fancy urls
} else {
//cludgy old-style urls
}
嗯..这可能需要一些思考才能获得正确的解决方案..如果您愿意的话,请在这里关注我:)
SEO URL的主要介绍是(1)在URL中包含人类可读的文本,以及(2)摆脱GET参数。
暂时看一下第(2)点,这最初是主要驱动因素,因为人们使用about.php?id = 1,id = 2 ... id = 3457348多次获得了在搜索引擎中列出的同一页面,这当然会被检测到并停止,然后有时人们会通过一个会话id = 24234234,该会话也将作为重复页面而停止(正确的做法是,因为它使用HTTP作为有状态协议,但并非如此)。
对于URL,从第一个字符到#片段的#都定义了一个资源(从HTTP角度来看),因此正确的做法是,当几个不同的URL全部解析为相同的“页面”时,它们实际上是重复的。
因此,通过否定GET参数,您可以解决此问题,该问题现在已经不是问题,而且已经存在很长时间了,除了虚荣之外,没有理由不正确使用GET参数。
因此,实际上您没有解决任何问题,而是引入了一个新问题,因为您希望'/ page / about-us'和'?page = about-us'都进入同一个'page',这意味着您已经再次获得重复的资源,这可能会被检测到并且您可能会受到处罚。
因此,通过引入“ SEO URL”,您实际上已经创建了SEO URL被“发明”以抵消的问题。
这只剩下关于URL中人类可读单词的要点。 URL应该是透明的,因此它们实际上不算任何东西,但是有些仍然像-所以我不得不问使用'/?/ page / about-us'是怎么回事...如果不这样做'不是那样的话,那么用文件系统路径'/ page / about-us'创建一个固定文件怎么办呢?该文件系统只包含设置了正确变量的index.php?
当然,您可以创建重复的页面,并同时具有SEO友好的URL和GET参数URL,但是如您所见,这将不再是SEO友好的吗?
嚼点东西:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.