WordPress和YOURLS如何在根级别和平共处



我想使用 YOURLS 制作更好的链接缩短器服务。我为此购买了一个简短的URL:sly.pe。 YOURLS 已安装,sly.pe/admin 可以访问。

我还想使用WordPress为大多数面向消费者的网站提供支持,网址为:sly.pe。 这个想法是我希望用户使用WordPress和OneAll social等注册插件注册该网站。 一旦经过身份验证,他们就会登录YOURLS和WordPress,并被重定向到像 sly.pe/home 这样的URL,该URL使用WordPress作为站点,但YOURLS(该用户的 sly.pe/admin(是嵌入的,以某种方式可访问。

这两种服务都会进行 .htaccess 更改。 如果我保持文件原样,除了 sly.pe 之外,我似乎没有任何其他WordPress URL,但是YOURLS工作正常。 如果我注释掉一些YOURLS代码,WordPress可以使用其他目录,但是YOURLS不起作用。 我怎样才能让两者很好地共存? 或者至少定义我想要的WordPress URL并让它们工作?

(注释掉YOURLS代码可以让WordPress工作,但破坏YOURLS(: .htaccess

# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>
# END YOURLS
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我能够让YOURLS使用WordPress。这是我是如何做到的...

我已经将 YOURLS 放在 niemannross.com/links - 所以对我来说,重定向看起来像 http://niemannross.com/link/rlunchlessons

在您的WordPress副本中安装John Godley的重定向插件。

查看 Wordpress:Admin:Tools:Redirection。顶部有几个选项卡。您应该看到重定向 |群组 |日志 |404年代 |导入/导出 |选项 |支持。

选择重定向

选择添加新重定向

源 URL:/link/.* - 选择正则表达式。

目标网址:/link/yourls-loader.php

组:在您的设置中有意义的任何内容。我选择了wordpress:redirections。

这适用于我的安装。

简单的答案是:你不能。WordPress和YOURLS(请,YOURLS,而不是YourLS(都需要处理服务器请求以返回预期的结果(例如,在请求http://sho.rt/blah时,每个应用程序都需要检查blah是否是它管理的内容(

长答案:你不应该,因为以下所有。

基本上,您需要在以下情况下起作用的东西:

  • blah是WP文章,但不是YOURLS短网址
  • blah 是一个 YOURLS 短 URL,但不是 WP 文章
  • blah既不是WP文章也不是YOURLS短URL
  • 可选地决定当blah既是 WP 文章又是 YOURLS 短 URL 时要做什么

您的代码还需要:

  • 防止WP创建一个已经是YOURLS短URL的"slug">
  • 防止 YOURLS 创建已经与 WP slug 匹配的短 URL

您需要在WP区域和YOURLS区域中都有代码。

底线:需要处理很多边缘情况。在某些情况下可能对您有效的东西在其他情况下可能不起作用,在您这边或与其他人一起。

我认为您将不得不解决@Ozh提到的问题,但是这里有一个插件可以让您的WordPress用户更轻松地使用YOURLS:https://wordpress.org/plugins/yourls-link-creator/

你不能,

我尝试了不同的方法,也许使用新的apache 2.4使用你会if else语句,但我不是这些命令的专家, 我想分享我为在根页面和子目录中的 html 站点中使用缩短器选项所做的工作,使用此解决方案,您仍然可以为人们提供网站的正常 url(例如 sho.rt(:

将您的网站设置在root下的文件夹中,名称为">w",这意味着它将位于" sho.rt/w"

然后使用此 .htaccess

# BEGIN YOURLS
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ /yourls-loader.php [L]
    RewriteRule ^$ /w [L]  
</IfModule>
# END YOURLS

如果用户没有传递 url 中的任何子文件夹,这将为您提供仍然使用 sho.rt 作为您的网站地址的选项,但如果他们这样做,它将首先签入 yourls,如果未找到,则转到您的文件夹。

还有一件事,不要忘记在/user/config.php$yourls_reserved_URL 数组中添加">w"(Yourls 配置文件(

我终于为我的网站解决了这个问题。

我有一个子域 http://sub.domain,我在其中安装了 YOURLS,但短 URL 位于 http://domain/someshortlink

wordpress网站也在 http://domain/

它曾经与交换插件(https://github.com/gerbz/Yourls-Swap-Short-Url(一起使用。只是使用那个YOURLS插件提供的htaccess,没有wordpress。但是由于我决定转向wordpress,这种组合将不起作用。

这是诀窍:

  1. 在你的htaccess上,保持简单,正如wordpress所希望的那样。删除 YOURLS交换插件的代码段htaccess(如果已添加(。

  2. 编辑您的404.php页面主题。我的在:wp-content/themes/twentynine/404.php

在一开始,只需添加:

<?php 
header('Location: http://sub.domain' . $_SERVER['REQUEST_URI'] );
exit;
?>

这将允许:

  1. 所有文件和目录都将遵循简单地提供它们的基本htaccess
  2. 所有URL而不是文件和文件夹将由wordpress以通常的方式处理。
  3. 如果未找到页面,wordpress 将触发404.php,该页面将发送到 YOURLS 进行尝试
  4. 如果 YOURLS 也找不到它,将显示来自 YOURLS 的 404 页面。

请记住也编辑YOURLS的404页面,以匹配您的wordpress主题。

祝你好运!

参考: https://github.com/gerbz/Yourls-Swap-Short-Url/issues/11

相关内容

  • 没有找到相关文章

最新更新