问题描述
我正在尝试我以为会是一个非常简单的屏蔽我的网址,但似乎无法让它工作的东西。我想能够链接到我的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。