问题描述

我正在尝试我以为会是一个非常简单的屏蔽我的网址,但似乎无法让它工作的东西。我想能够链接到我的 img 标签中的图像,而不必输入完整的 URL 。

Current url:  http://server.com/wp-content/themes/standard/images/img.jpg
or
<img src = "http://server.com/wp-content/themes/standard/images/img.jpg" />

但是在我的网页上,我想做的只是

<img src="http://server.com/images/img.jpg" />

但是我的本地主机似乎没有工作。我在 Windows 7 机器上运行 Apache 服务器。我试图使用.htaccess 来做我上面提到的。这是我的网站根目录下的.htaccess 文件。

更新:我尝试了下面的 ZweiBlumen 建议,但似乎没有工作。然后我尝试了 Geerts 建议,并将 re-write 方法添加到我的 admin 文件夹的 misc.php 中。然后我去了我的永久链接页面,点击保存。这样做的结果意味着我的.htaccess 文件夹被重写,并且其生成的输出在下面。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteRule ^css/(.*) /wp-content/themes/standard/css/$1 [QSA,L]
RewriteRule ^js/(.*) /wp-content/themes/standard/js/$1 [QSA,L]
RewriteRule ^images/(.*) /wp-content/themes/standard/images/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

但是,我仍然无法导航到我的图像文件夹,如:

http://localhost/images/myimage.jpg

我所得到的是一个没有找到的页面。约书亚的建议工作完美,但我希望结合掩盖图片的 URL 使用。

还有什么我可能做错了,还是应该检查?

更新:

对于读这个的人来说,我只是再试一次,它使用了 Geerts 和 Joshuas 方法的组合。我的 Firefox 浏览器似乎已经缓存了页面,导致我认为它不是。

我把它放在.htaccess 文件中的原因是,每次我去永久链接的管理员页面都会覆盖这个文件,所以我不会意外地覆盖这个文件。我想我可以把它关掉,但不知道该怎么做。所有这三个答案在一定程度上有所帮助。

最佳解决方案

查看 Roots WordPress Theme 。他们似乎完全按照你想要的 URL 来完成。

以下是他们的 roots-htaccess.php 文件的片段:

add_action( 'generate_rewrite_rules', 'roots_add_rewrites' );

function roots_add_rewrites($content) {
  $theme_name = next( explode( '/themes/', get_stylesheet_directory() ) );
  global $wp_rewrite;
  $roots_new_non_wp_rules = array(
    'css/(.*)' => 'wp-content/themes/' . $theme_name . '/css/$1',
    'js/(.*)'  => 'wp-content/themes/' . $theme_name . '/js/$1',
    'img/(.*)' => 'wp-content/themes/' . $theme_name . '/img/$1',
  );
  $wp_rewrite->non_wp_rules += $roots_new_non_wp_rules;
}

注意:如果您可以直接在.htaccess 文件中将其关闭,就像 ZweiBlumen 的答案一样,您应该选择该解决方案,因为它可能更加优化。

次佳解决方案

如果问题只是与图像,但不是 css 或 javascript,我认为你的 RewriteRule 有一个错字。 “$” 后我觉得你错过了一个”1″:

RewriteRule ^images/(.*)$ wp-content/themes/standard/images/$1 [L]

此外,您可能想尝试将这些额外的语句放在初始规则之下,即下面这行:

RewriteRule ^index.php$ - [L]

不确定。

第三种解决方案

为什么不以下列方式创建一个短码。

function img_folder_shortcode( ) {
   return get_stylesheet_directory_uri() . '/images';
}
add_shortcode( 'img_folder', 'img_folder_shortcode' );

然后在内容区域的任何位置使用以下短代码。

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。