需要帮助重建丢失的HTAccess文件

时间:2013-06-23 作者:omega33

我最初在Stack Overflow (7个月前)。我没有收到任何答复,也无法进一步调查。到目前为止,我正在努力解决这个问题,非常感谢熟悉WP和htaccess的人的帮助。

不久前,我在一个有很多应用程序的站点的子目录中安装了Magento,Magento下载程序/安装程序取代了。我的根目录中的htaccess文件。

通过wordpress安装运行的自动备份碰巧没有捕获根文件夹中的少数文件。我没有后备人员。

如果我真的知道并理解其中的一切,这就不会那么糟糕了。htaccess文件。它是在多年的时间里慢慢创造出来的!

我所寻求的是一些重建援助。我已经遇到了一些问题。

例如,当我尝试访问wordpress文件夹以外的文件夹时,我会被重新路由到wordpress的404。

例如,我在子文件夹/代理中有一个代理应用程序,但如果我转到mysite。我在地址栏中看到的com/代理:mysite。com/proxy和wordpress 404。

在过去的几个月里,我非常喜欢学习越来越多的正则表达式,并且能够集中精力。htaccess重定向、规则等。因此,我不仅想解决这些问题,而且想了解它们是如何解决的。

这是我的根。htaccess现状(从我记录的一些杂项注释中总结出来:

<Files .htaccess>
order allow,deny
deny from all
</Files>

# Redirect
#<IfModule mod_rewrite.c>
#RewriteEngine on
#RewriteCond %{REQUEST_URI} !^/site/
#RewriteCond %{HTTP_HOST} ^www\\.
#RewriteRule (.*) http://mydomaint.com/site/$1 [R=301,L]
#</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
#RewriteEngine on
#RewriteBase /site
#RewriteRule ^index\\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !^/site/
#RewriteRule . /site/index.php [L]

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/$1
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ site/index.php [L]

</IfModule>
我得到的印象是,代码中存在重复和冗余。而且它缺少一些行,无法在wordpress以外的子文件夹中查找(顺便说一下,它位于/站点中)。

我已经向您展示了被注释掉的内容,因为这可能有助于了解我的错误所在,或者确定应该如何设置它。

我需要的是所有请求:

我的域名。com/site www.mydomain。com/site-mydomain。com(无子文件夹)被定向到mydomain.com/site

对任何其他子文件夹(假设存在)的请求应转到所请求的文件夹(例如。mydomain.com/proxymydomain.com/shop 传递到各自的文件夹/proxy/shop).

对不存在的子文件夹的请求应发送到mydomain.com/site

我现在还不确定是否还有什么东西坏了,但如果我发现了,我可以把它带到桌子上。

我应该补充一点,我也试过这样做:命令允许,拒绝所有人

# Redirect
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{HTTP_HOST} ^www\\.
RewriteRule (.*) http://jonathanevatt.com/site/$1 [R=301,L]
</IfModule>
但这件事有点奇怪。如果我浏览到www.mydomain.com (或mydomain.com) 最后,我在地址栏中找到了它,它出现在一个空白页面上(作为页面左上角的一行文本:

/home/jonathan/public_html/app/Mage.php was not found
这正是安装程序弹出我的后发生的事情。htaccess文件。我不知道在哪里或如何被征召入伍,因为我看不到任何东西。htaccess导致调用此地址。这很令人困惑。

ALSOI确实在我的htaccess文件中找到了一些规则的备份,这些规则用于重定向对我以前Joomla站点中各种类型内容的请求。这些规则是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /site/
RewriteRule ^en/Page-[0-9]+\\.html /site/blog/ [R=301,L]
RewriteRule article&id=([0-9]+) /?p=$1 [R=301,L]    #CATCH ?option=com_content&view=article&id=307&catid=89&Itemid=55
RewriteRule ^articles-other-writing/(Page-[0-9]|index)\\.html /site/blog/ [R=301,L]
RewriteRule ^articles-other-writing/[a-zA-Z\\-]+/(Page-[0-9]|index)\\.html /site/blog/ [R=301,L]
RewriteRule ^what-is-love/([a-zA-Z0-9\\-\\/\\.\\_\\=\\?\\&]+) /site/blog/ [R=301,L]
RewriteRule ^media/audio/([0-9a-zA-Z_]+\\.mp3)$ /wp-content/uploads/audio/$1 [L,R=301]
RewriteRule ^[A-Za-z\\-]+/[a-z\\-]+/[a-z\\-]+/([0-9]+)\\-.+ /?page_id=$1 [R=301,L]
RewriteRule ^/swine-flu\\.html$ /site/tags/swine-flu/ [R=301,L]
RewriteRule ^events/event-descriptions/([A-Za-z\\-]+)\\.html$ /site/events/$1/ [R=301,L]
RewriteRule ^[0-9]{8}([0-9]*)\\/(articles|great-products|others-videos|jonathan-s-blog)[a-zA-Z0-9\\-\\/\\.]+ /?p=$1 [R=301,L]   # CATCH POSTS 1
RewriteRule ^[0-9]{8}([0-9]*)\\/services[a-zA-Z0-9\\-\\/\\.]+ /?page_id=$1 [R=301,L]                # CATCH PAGES 1
RewriteRule ^myblog[a-zA-Z0-9\\-\\/\\.] /site/blog/ [R=301,L]    #CATCH MYBLOG
RewriteRule ^view-by-tag/([a-zA-Z\\-]+)/([a-zA-Z0-9\\-\\/\\.\\_\\=\\?\\&]+) /site/tags/$1/ [R=301,L]
我可能应该将它们集成到新的htaccess文件中,以防仍有指向旧Joomla系统上重要内容的链接。

1 个回复
SO网友:TheDeadMedic

这样做很棘手。。。

对任何其他子文件夹(假设存在)的请求应转到所请求的文件夹(例如。mydomain.com/proxymydomain.com/shop 传递到各自的文件夹/proxy/shop).

。。。结合。。。

对不存在的子文件夹的请求应发送到mydomain.com/site

。。。在不丢失将重写传递到所述子文件夹的能力的情况下。你看,就像。。。

RewriteCond %{REQUEST_URI} ^/site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule (.*) http://www.domain.com/site/$1 [R=301,L]
。。。将劫持任何未解析为实际资源的URL,即使初始路径组件指向有效的子文件夹。例如/proxy/no-file-here/shop/product/dynamic-url 将全部重定向到/site/...

由于我认为这并不理想(尤其是对于Magento),因此我建议使用一个目录黑名单来忽略,然后处理其余的需求。

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Enforce www, use lexical comparison for efficiency.
  RewriteCond %{HTTP_HOST} != "www.domain.com"
  RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

  # Stop rewriting for blacklisted directories 
  RewriteRule ^(proxy|shop) - [L]

  # Handle root domain & non-"/site" requests
  RewriteCond %{REQUEST_URI} = "/" [OR]
  RewriteCond %{REQUEST_URI} !^/site
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule (.*) http://www.domain.com/site/$1 [R=301,L]
</IfModule>

# Legacy Joomla rules here

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

# END WordPress
我不是阿帕奇奇才,虽然你以前也尝试过,但他们可能仍然是你最好的选择,即使不是webmasters.

结束

相关推荐

我的网站使用HTACCESS进行URL重定向

我的网站有一些发展问题,我真的需要一些帮助当有人键入www.mysite时。com/mysite。com/mysite。com/anypagename。php将打开一个页面,其中显示原始页面的数据,但没有图片。根目录中的所有页面都出现此问题。如何使用htacess重定向解决此问题?我不知道怎么了,这影响了我的表现