我想使用 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,这种组合将不起作用。
这是诀窍:
-
在你的
htaccess
上,保持简单,正如wordpress所希望的那样。删除 YOURLS交换插件的代码段htaccess
(如果已添加(。 -
编辑您的
404.php
页面主题。我的在:wp-content/themes/twentynine/404.php
在一开始,只需添加:
<?php
header('Location: http://sub.domain' . $_SERVER['REQUEST_URI'] );
exit;
?>
这将允许:
- 所有文件和目录都将遵循简单地提供它们的基本
htaccess
- 所有URL而不是文件和文件夹将由wordpress以通常的方式处理。
- 如果未找到页面,wordpress 将触发
404.php
,该页面将发送到 YOURLS 进行尝试 - 如果 YOURLS 也找不到它,将显示来自 YOURLS 的 404 页面。
请记住也编辑YOURLS的404页面,以匹配您的wordpress主题。
祝你好运!
参考: https://github.com/gerbz/Yourls-Swap-Short-Url/issues/11