【问题标题】:Any ideas for alternative ways of rewriting URL?关于重写 URL 的替代方法的任何想法?
【发布时间】:2018-08-12 06:00:56
【问题描述】:

目前,我使用的是社区开源软件。它一切都很好。 我的问题不是什么大问题,崩溃或停止我的网站不是错误。这并不可怕。 只是我想知道更多,因为我尝试了太多不同的方法(对于我将在下面讨论的问题),但显然我只是不够出色的疑难解答。 所以......让我最后解释一下它是关于什么的。 我有这样的网址:

https://someexamplewebsitehere.com/forum

我也想这样:

https://someexamplewebsitehere.com/forov

(“forov”在我的母语中与“forum”相同)

我希望页面的内容完全一样(镜像)。不一样的安装。只是我想重写它。我想成为某种别名,但我没有网络服务器的权限,我只有 cPanel,仅此而已。

这里解释了类似的解决方案 rewrite a folder name using .htaccess 但显然,它不适用于我的网站。

默认的 CMS .htaccess 文件如下所示:

Options +FollowSymLinks
RewriteEngine On

AddEncoding gzip .gz
AddEncoding gzip .gzip
<FilesMatch "\.(js.gz|js.gzip)$">
  ForceType text/javascript
</FilesMatch>
<FilesMatch "\.(css.gz|css.gzip)$">
  ForceType text/css
</FilesMatch>


RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/
RewriteCond %{REQUEST_URI} !/ow_cron/run\.php
RewriteCond %{REQUEST_URI} !/e500\.php
RewriteCond %{REQUEST_URI} !/captcha\.php
#RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]
RewriteCond %{REQUEST_FILENAME} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php

而且我不想在论坛插件中进行自定义修改,因为在插件更新的情况下我会丢失这些修改。如果可能的话,我只想重写 URL。

我尝试了很多变种。 有什么想法吗?

【问题讨论】:

  • 有趣的是,有些人对这个问题投了反对票,但与此同时,他们并没有留下建设性的评论,并没有为学生展示“如何做”的问题的解决方案。 ;) 是的,即使在堆栈溢出中也有很多此类问题的示例,但它们并非每次都有效! ;)

标签: .htaccess url hyperlink url-rewriting


【解决方案1】:

你可以这样写。

RewriteRule ^forum/(.*)$ /forov/$1 [R=301,NC,L]

这就是我将它用于我的 CMS 客户的方式。

RewriteEngine On
RewriteCond %{HTTP} off
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^forum/(.*)$ /forov/$1 [R=301,NC,L]

同时使用:

Options +FollowSymlinks
Options -Indexes

如果所有其他方法都失败并且只是该页面,您可以制作一个虚假页面并使用 301 重定向,这基本上表示该页面是同一页面但现在在这里。这是对其他地方的实际页面使用重定向的正确方法,您不想失去页面排名并通知搜索机器人。

即 yoursite.com/forum

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.YourWebsite.com/forov"); 
?>

【讨论】:

  • 非常感谢@norcal johnny 的回答!我昨天试过了,但由于某些原因,它在那个 cms 中不起作用。
  • @saly_bat,更新了我使用的完整代码的答案。
  • 感谢您的回答!真的!你对我和其他像我一样的人很有帮助。我也想出了使用假页面的选项,但是初始化论坛插件时出现问题(在这种情况下存在不同的问题,例如导航菜单的重复使问题复杂化)。
  • 您是否尝试在原始帖子和 301 重定向之间添加其他代码...
  • 我试过这样: 'RewriteCond %{REQUEST_URI} !/forov/ RewriteCond %{REQUEST_URI} ^/forum [NC] RewriteRule (.*) examplewebste.com/forov' ,但在那种情况下它不是重写,类似于假页面的情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多