[Mod rewrite กับ CSS] มีปัญหาครับ rewirte แล้ว CSS เพี้ยนครับ

เริ่มโดย picharnan, 02 พฤษภาคม 2009, 16:29:55

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

picharnan

คือว่าผมจะทำการเขียน rewrite แบบนี้นะครับ

RewriteRule ^([^/]*)/$ index.php?cat=$1 [L]

ผมลองใส่ url : index.php?cat=test แสดงผลปกติครับ

แต่พอผมใส่ url ที่ rewrite แล้ว test/ รูปภาพที่กำหนดใน css มันไม่แสดงเลยครับ



ตอนใส่ url แบบแรก มันจะไปเปิดภาพที่ album/img/logo.png
แต่พอทำการ rewrite แล้วมันไปเรียกภาพที่ album/test/img/logo.png แทนอ่ะครับ

อยากรู้ว่าต้องแก้ css อย่างไรครับ

g-ji

เขียน CSS ยังไงละ :P

ถ้าจะทำ Dynamic Web Page

ควรจะใช้

<link rel="stylesheet" href="xxx.css" media="screen" />

ใส่ไว้ที่ <head></head> เพื่อนำเข้า CSS มันจะแสดงผลเหมือนกันหมด

ตอบมากไม่ได้ต้องเห็นโค้ดว่า เขียน CSS แบบไหน กำหนด เพจแบบไหน :-\

picharnan

<LINK href="css.css" rel="stylesheet" type="text/css">

ผมลองแก้เป็น

<link rel="stylesheet" href="css.css" media="screen" />

เป็นแบบเดิมครับ

ตัวอย่างเล็กๆในไฟล์ css.css ที่ผมเขียนครับ

#sub_nav_top {text-align:center;line-height: 44px; padding:0px; float:left; width:185px; height:35px; background-image:url('img/sub_nav_top.png'); background-repeat:no-repeat; background-position:center;}
#sub_nav_middle {padding-top:0px; padding-left:0px; float:left; width:185px; background:#9ed9f5;background-image:url('img/sub_nav_middle.png'); background-repeat:repeat-y; background-position:top left;}
#sub_nav_bottom {padding:0px; float:left; width:185px; height:45px; background-image:url('img/sub_nav_bottom.png'); background-repeat:no-repeat; background-position:center;}

picharnan

คราวนี้ผมได้ลอง rewrite ใหม่เป็น

RewriteRule ^([^/]*).html$ index.php?cat=$1 [L]

ผลก็ลองเลยครับ url : test.html ปรากฏว่าได้ครับไม่มีปัญหากับการแสดงผล

แต่ผมอยากได้ test/ แบบนี้มากกว่าครับ

แนะนำด้วยครับ

g-ji

<link rel="stylesheet" href="css.css" media="screen" type="text/css" />

มะกี้พิมพ์ตก

เข้าใจว่า

ไฟล์มันอยู่ ที่เดียวกับ index ใช่มั้ย

background-image:url('img/sub_nav_top.png')

แล้วอันนี้ ไปเรียกรูปจาก img ใช่มั้ย ??

ลองสร้าง โฟลเดอร์ใหม่ ชื่อ style ละกัน เอาไฟล์ css และ รูปที่ใช้ใน css ยัดลงไปให้หมดเลย

โครงสร้างมันก็จะเป็น

style/
-css.css
-img
--รูปที่ใช้ใน css

<link rel="stylesheet" href="style/css.css" media="screen" type="text/css" />

เป็นการแยก css ออกจาก ไฟล์อื่นๆ ของเว็บไปเลย

background-image:url('img/sub_nav_top.png')

ส่วนอันนี้ - -* คนอื่นเขียนยังไงไม่รู้ แต่เราไม่ใส่ ' ' ↓ และจริงๆ ไม่จำเป็นต้องใส่ก็ได้ (จะใส่เฉพาะลิ้งค์มีช่องว่าง)

background-image:url(img/sub_nav_top.png)

ถ้ามันยังไม่หาย คนต้องไปส่วนอื่นแล้วละนะ เพราะว่า ตามปกติ CSS จะไม่ได้รับผลจากการ Rewrite ใดๆ ทั้งสิ้น

จริงๆ ก็ไม่ค่อยเข้าใจว่า

Rewrite ยังไง ถ้า Re เอา index.php ออก เปลี่ยนเป็น /xxx/ แทน มันก็ไม่มีผลอะไรกับ CSS

เ้พราะว่ามันไม่ได้เรียกผ่าน url แต่เรากำหนด path ให้ เบราเซอร์อ่าน "ค่าใน CSS" แล้วแสดงผลให้เราเห็น

แล้วโค้ด เว็บ เขียนยังไงละ ?? เอาแค่คร่าวๆ ว่า สั่งไฟล์ไหนเข้ามา แสดงผลยังไงก็พอละ

picharnan


g-ji

พึ่งเคยเจอ เคสนี้แหละ

เขียน Mod Rewrite แล้ว CSS เพี้ยน  :-X

ยังนึกสาเหตุที่ทำให้มันเพี้ยนไม่ออก


picharnan

ผม งงว่าำทำไม  ผม rewrite เป็น

RewriteRule ^([^/]*).html$ index.php?cat=$1 [L]

แล้วแล้วเรียก test.html ใช้ได้

แต่พอ  rewrite เป็น

RewriteRule ^([^/]*)/$ index.php?cat=$1 [L]

แล้วเรียก test/ กลับใช้ไม่ได้


ผมเลยคิดว่าการ rewrite มีผลอ่ะครับ  ต้องขอบคุณพี่ g-ji มากครับที่คอยช่วยแต่ผมทำตามทุกอย่าแล้วก็ยังไม่ได้

เด๋ยวโค๊ดเว็บตามมาครับ แป๊บๆๆ

picharnan

ก่อนอื่น

<link rel="stylesheet" href="style/css.css" media="screen" type="text/css" />

^
^
ทำตามที่แนะนำทุกอย่างครับ

่ส่วนของ php ไม่ได้ยุ่งเกี่ยวกับ CSS แต่อย่างใด อยู่ใน <div id="content"> อย่างเรียบร้อย
<?php
if($_GET[cat]==null){
echo 
$_GET[cat] ";

if(
$_GET[cat]){
echo 
$_GET[cat] ";
}
?>

หมดส่วน php แล้วก็ตามด้วยการปิด </div>


ประมาณนี้อ่ะครับ

g-ji

ได้ใส่

rewriteBase /

ใน htaccess แล้วใช่มั้ย

...

เดี๋ยวค่อยๆ นั่งนึก คงนึกออก

picharnan

อ้างถึงจาก: g-ji ใน 02 พฤษภาคม 2009, 17:28:56
ได้ใส่

rewriteBase /

ใน htaccess แล้วใช่มั้ย

...

เดี๋ยวค่อยๆ นั่งนึก คงนึกออก

rewriteBase /  ยังไม่ได้ใส่ครับ  ใส่ไงอ่ะ

ผมเขียน

RewriteEngine On
RewriteRule ^([^/]*)/$ index.php?cat=$1 [L]


แค่นี้อ่ะ

g-ji

เอาไว้ใต้ 

Rewriteengine On อ่ะ


RewriteEngine On
RewriteBase /

RewriteRule ...



เพิ่มเติม

http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html

picharnan

แก้ได้แล้วครับ

http://forums.devnetwork.net/viewtopic.php?f=1&t=93806&start=0&st=0&sk=t&sd=a


ทำงี้ครับหายเลย

<link href='http://www.mysite.com/style/css.css' rel='stylesheet' type='text/css' />

g-ji

เหอๆ - -* เรียก url เต็มเลยหรอ :P

คิดไว้นะ แต่มันยังไม่ดีที่สุด

แต่มันก็ง่ายดี :P

ball6847

We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

picharnan

อ้างถึงจาก: ball6847 ใน 02 พฤษภาคม 2009, 17:46:14
ผมว่าปัญหาเป็นที่ RewriteRule มากกว่า

เขียนยังไงหล่ะครับจะดี  ผมว่ามันก็พอได้นะครับ

ball6847

อ้างถึงจาก: picharnan ใน 02 พฤษภาคม 2009, 17:47:26
อ้างถึงจาก: ball6847 ใน 02 พฤษภาคม 2009, 17:46:14
ผมว่าปัญหาเป็นที่ RewriteRule มากกว่า

เขียนยังไงหล่ะครับจะดี  ผมว่ามันก็พอได้นะครับ

ใส่

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


ก่อน RewriteRule ครับ เพื่อบอกมันไม่ต้อง rewrite หากไฟล์ที่เรียกมีอยู่จริง
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

picharnan

อ้างถึงจาก: ball6847 ใน 02 พฤษภาคม 2009, 17:51:59
อ้างถึงจาก: picharnan ใน 02 พฤษภาคม 2009, 17:47:26
อ้างถึงจาก: ball6847 ใน 02 พฤษภาคม 2009, 17:46:14
ผมว่าปัญหาเป็นที่ RewriteRule มากกว่า

เขียนยังไงหล่ะครับจะดี  ผมว่ามันก็พอได้นะครับ

ใส่

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


ก่อน RewriteRule ครับ เพื่อบอกมันไม่ต้อง rewrite หากไฟล์ที่เรียกมีอยู่จริง


ขอบคุณครับ +1 ทั้งสองคนเลย

อิอิ

g-ji