我的.htaccess
文件存在问题。我试过谷歌搜索但找不到任何有用的东西。
我有一个AJAX请求将页面加载到index.php中。触发它的链接通过jquery以“#”为前缀。因此,如果您点击链接 domain.com/foo/bar (wordpress固定链接),您将在浏览器和内容中获得 domain.com /#/ foo / bar 将通过AJAX加载。
我的问题是:由于这些是博客文章,外部链接抓住了真正的链接(domain.com/foo/bar),所以我希望它们被重定向到domain.com/#/foo/bar(因为然后ajax检查哈希并发挥其魔力。
示例here。
前置的jquery代码是:
$allLinks.each(function() {
$(this).attr('href', '#' + this.pathname);
...
然后脚本检查
if (hash) { //we know what we want, the url is not the home page!
hash = hash.substring(1);
URL = 'http://' + top.location.host + hash;
var $link = $('a[href="' + URL + '"]'), // find the link of the url
...
现在我正在尝试将重定向与htaccess一起使用。我需要检查请求是外部还是内部
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 #???
如果uri以“/#/”开头,这是一个问题,因为它是一个评论,那么\%23并没有真正起作用。
RewriteCond %{REQUEST_URI} !^/\%23/(.*)$ #???
如何在不影响内部AJAX内容的情况下,将外部请求从domain.com/foo/bar重定向到domain.com/#/foo/bar,以实现此目的?
答案 0 :(得分:0)
我认为您的$allinks
变量的分配方式与此类似:
$allinks = $('a');
请改为:
$allinks = $('a[href^="' + document.location.protocol + '//' + document.location.hostname + '"]');
这会将内部链接转换为您的hash
- y样式。
答案 1 :(得分:0)
好的,我用PHP完成了这里是代码
$path = $_SERVER["REQUEST_URI"];
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo "It's ajax";
} else {
if(strpos($path, '/#/') === false) {
header("Location: http://schnellebuntebilder.de/#".$path); //ONLY WORKS IF THERE IS NO BODY TAG
}
}
肯定有一个更好的解决方案,但是现在这样做了,因为在我的情况下,页面/ foo / bar没有包含header.php,所以没有> body< -tag和php“ header()“函数有效。如果有人知道htaccess脚本,我很想知道和学习。