Tạo mặt nạ wp-content / Themes / name / hình ảnh vào thư mục hình ảnh bằng cách sử dụng htaccess


10

Tôi đang thử những gì tôi nghĩ sẽ là thứ gì đó thực sự đơn giản để che giấu url của mình nhưng dường như không thể làm cho nó hoạt động được. Tôi muốn có thể liên kết đến hình ảnh trong thẻ img của mình mà không cần phải nhập url đầy đủ.

I E

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" />

Tuy nhiên trên trang của tôi, tôi chỉ muốn làm

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

Tuy nhiên dường như không có gì đang làm việc trên localhost của tôi. Tôi đang chạy máy chủ Apache trên máy tính Windows 7. Tôi đang cố gắng sử dụng .htaccess để làm những gì tôi đã đề cập ở trên. Đây là tập tin .htaccess của tôi trong thư mục gốc của trang web của tôi.

CẬP NHẬT: Tôi đã thử đề xuất ZweiBlumen bên dưới nhưng dường như không được. Sau đó, tôi đã thử đề xuất Geerts và thêm phương thức viết lại vào misc.php của thư mục quản trị của tôi. Sau đó tôi đã đi đến trang permalinks của mình và nhấn lưu. Kết quả của việc này có nghĩa là thư mục .htaccess của tôi đã được viết lại và đầu ra mà nó tạo ra bên dưới.

# 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

Tuy nhiên, tôi vẫn không thể điều hướng đến thư mục hình ảnh của mình, chẳng hạn như:

http: //localhost/images/myimage.jpg .

Tất cả tôi nhận được là một trang không tìm thấy. Đề xuất của Joshua đã hoạt động hoàn hảo tuy nhiên tôi hy vọng sẽ sử dụng kết hợp này với việc che dấu URL hình ảnh.

Có điều gì khác tôi có thể làm sai, hoặc nên kiểm tra?

CẬP NHẬT:

Đối với bất kỳ ai đọc nó, tôi chỉ cần thử lại và nó đã hoạt động bằng cách sử dụng kết hợp các phương pháp Geerts và Joshuas. Trình duyệt Firefox của tôi dường như đã lưu vào bộ nhớ cache khiến tôi nghĩ rằng nó không phải.

Lý do tôi đồng ý với việc đưa nó vào tệp .htaccess là vì tệp này bị ghi đè mỗi khi tôi truy cập trang Quản trị permalinks và vì vậy tôi sẽ không ghi đè lên điều này một cách tình cờ. Tôi đoán tôi có thể tắt cái này bằng cách nào đó nhưng không biết làm thế nào để làm điều đó. Tất cả ba câu trả lời đã giúp ở một mức độ nào đó.

Câu trả lời:


10

Kiểm tra chủ đề Roots WordPress . Họ dường như làm chính xác những gì bạn muốn với các URL.

Đây là một đoạn trích từ tập tin root-htaccess.php của họ :

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;
}

Lưu ý: nếu bạn có thể thực hiện việc này trực tiếp trong một .htaccesstệp, như trong câu trả lời của ZweiBlumen, bạn nên chọn giải pháp đó vì có lẽ nó được tối ưu hóa hơn.


1
Mặc dù không hoàn toàn những gì tôi đang tìm kiếm phương pháp này cuối cùng đã đưa các quy tắc vào .htaccess thông qua trang permalinks của quản trị viên khi lưu. Tôi đã kết thúc bằng cách sử dụng phương pháp này kết hợp với phương pháp của Joshuas và nó hoạt động hoàn hảo. Cảm ơn đã giúp đỡ.
dreza

Thật tuyệt, để thực hiện, đó là một điều tốt khi họ đặt các chữ viết lại vào .htaccess.
Geert

Tôi nghĩ rằng phương pháp này hoàn toàn tốt so với việc mã hóa chúng vào .htaccess của bạn. Bởi vì ở đây bạn cũng có thể quản lý nó dựa trên hàm.php của một chủ đề và tắt các quy tắc này nếu cần.
Jake

Đây thực sự là phương pháp tốt nhất cho Wordpress. Các quy tắc của WP Rewrite chỉ được tạo khi cập nhật cấu trúc permalinks, do đó, những gì bạn đang làm ở đây về cơ bản là viết nó vào .htaccess của bạn; mặc dù theo cách dễ quản lý hơn như Jake nói.
pospi

1
Có lẽ không nên wp-content/themesmã hóa cứng, vì chúng đang di chuyển mục tiêu. global $wp_theme_directoriescó thể được sử dụng để lặp qua tất cả các thư mục chủ đề đã đăng ký và xác định chủ đề hiện đang hoạt động. Và WP_CONTENT_DIRcó thể được sử dụng để có được define()tên ed của thư mục nội dung. Dù sao, +1 về câu trả lời này.
kaiser

6

Nếu vấn đề chỉ xảy ra với hình ảnh, nhưng không phải là css hoặc javascript, tôi nghĩ rằng có một lỗi đánh máy trong RewriteRule của bạn. Tôi nghĩ rằng bạn thiếu "1" sau "$":

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

Ngoài ra, bạn có thể muốn thử đặt các câu lệnh bổ sung đó bên dưới quy tắc ban đầu, tức là bên dưới dòng này:

RewriteRule ^index\.php$ - [L]

Không chắc chắn mặc dù.


con vịt đã không nhìn thấy điều đó. Cảm ơn tôi sẽ cho đi.
dreza

4

Tại sao bạn không tạo một shortcode cho nó theo cách sau.

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

Và sau đó sử dụng shortcode sau ở bất cứ đâu trong khu vực nội dung.

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

hmmm, tôi thích khả năng sử dụng [img_folder] trong khu vực nội dung, mặc dù tôi thực sự chỉ muốn có url / hình ảnh chứ không phải toàn bộ nội dung wp được hiển thị. Tuy nhiên, có thể xem xét kết hợp điều này với câu trả lời của Geert và ZweiBlumens nếu tôi thực hiện được.
dreza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.