【发布时间】:2013-10-25 04:29:43
【问题描述】:
我正在使用 mod_rewrite 来获取 SEO 友好的 URL
RewriteEngine on
RewriteBase /
RewriteRule ^([^/\.]+)/?$ /page.php?page=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /page.php?page=$1&sub=$2 [L]
所以我可以加载http://foo.com/food/local。效果很好,但它会加载整个页面,并且客户端希望添加一个在页面加载期间持续存在的流播放器。
所以我试图切换到使用 jQuery.load() 加载所有内容
<script>
$(".ajax").click( function(e) {
e.preventDefault();
$('#contentMain').load( $(this).attr("href"), function() {console.log( "Load was performed." ); });
});
</script>
我可以将整个页面加载到#contentMain,但我对如何在加载仅交换内容的剥离版本的 PHP 时维护 SEO URL 感到困惑。
例如,来到http://foo.com/food/local 将加载整个页面,但单击来自http://foo.com/food/local 的href /food/foreign 链接不会按mod_rewrite 访问page.php,而只是使用相同的args 轮询content.php?我应该重建 page.php 以某种方式识别上下文吗?
此外,当使用此方法时,您是否会通过 AJAX 更新元描述和标题?或者只要http://foo.com/food/local 可以被抓取并拥有正确的元信息就没有关系?
【问题讨论】:
-
您应该让您的所有链接保持完整并链接到页面。然后使用 jQuery 你“捕捉”这些链接的点击事件并重新加载内容(也许使用 javascript 在地址栏中设置 URL)。这是最好的解决方案,因为如果用户没有启用 javascript,它也可以工作
-
在php中,检测请求是否为ajax请求。如果是,则返回精简版,否则,返回完整版。 davidwalsh.name/detect-ajax
-
@KevinB 多么棒的资源!这让我的生活变得更轻松了!
标签: php .htaccess jquery mod-rewrite