PDA

View Full Version : سوال: سئو کردن این آدرس چگونه؟؟؟ (حل شد)



pirmard66
جمعه 11 اسفند 1391, 20:11 عصر
با سلام خدمت اساتید محترم

من یکسری ادرس دارم که میخوام تبدیلشون کنم به ادرس بهینه!

مثلا این لینک:


news.php?title=خبر

تبدیل بشه به :


news/title/خبر

میدونم با htacsess این کار انجام میشه...

ولی سر در نمیارم!

اگه میشه توضیح کامل بدید،با تشکر

در ضمن تمام پست هایی که در این رابطه در انجمن هست رو خوندم و متوجه نشدم!!!

با تشکر

mokha21
جمعه 11 اسفند 1391, 20:21 عصر
سری به سایت زیر بزنید .
http://www.generateit.net/mod-rewrite (http://www.generateit.net/mod-rewrite/)


کد زیر رو در htacsess قرار یده


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

pirmard66
جمعه 11 اسفند 1391, 20:35 عصر
ممنون دوست عزیز...

قبل اینکه تست کنم یه سوال داشتم:

خب من چند مدل ادرس دارم !برای هرکدوم یک htacsess بسازم ؟

pirmard66
جمعه 11 اسفند 1391, 20:46 عصر
متاسفانه جواب نداد و ارور 404 میده!

دوستان ...کمک...

MMSHFE
جمعه 11 اسفند 1391, 20:46 عصر
نه کاملا. مثلاً به کد htaccess. زیر نگاه کنید:


RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ /$1.php?$2=$3 [L]

با کد فوق، اگه بنویسید news/title/خبر اونوقت آدرس news.php?title=خبر رو باز میکنه.
یا اگه بنویسید articles/id/5 اونوقت آدرس articles.php?id=5 باز میشه.

MMSHFE
جمعه 11 اسفند 1391, 20:48 عصر
این کد رو باید توی ریشه سایتتون بگذارین. اگه news.php توی مسیر ریشه نیست، مسیرش رو هم قبل از news.php توی htaccess. باید بنویسید (البته قسمت دوم که اسم فایل اومده نه قسمت اول که فقط news نوشته شده)

pirmard66
جمعه 11 اسفند 1391, 20:55 عصر
دقیقا همینکارو کردم
و این ارور رو میده!!!

The requested URL /news.php was not found on this server.

pirmard66
جمعه 11 اسفند 1391, 21:10 عصر
نه کاملا. مثلاً به کد htaccess. زیر نگاه کنید:


RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ /$1.php?$2=$3 [L]

با کد فوق، اگه بنویسید news/title/خبر اونوقت آدرس news.php?title=خبر رو باز میکنه.
یا اگه بنویسید articles/id/5 اونوقت آدرس articles.php?id=5 باز میشه.


مسیر درست شد!

فقط فایل css اون صفحه رو نمیخونه چرا؟؟؟

صفحه بدون css میاد بالا

اساتید راهنمایی کنن!!!

ممنونم

mamali-mohammad
جمعه 11 اسفند 1391, 21:15 عصر
برای فایل css باید آدرس کامل بدید
مثلا yourname.com/style.css

pirmard66
جمعه 11 اسفند 1391, 21:25 عصر
ممنون دوست عزیز..

مشکل حل شد...!

MMSHFE
جمعه 11 اسفند 1391, 21:40 عصر
توی لوکال هاست باید کد زیر رو بگذارین:


RewriteEngine on
Options +FollowSymlinks
RewriteBase /site_folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ $1.php?$2=$3 [L,QSA]

توضیح: بجای site_folder اسم پوشه سایتتون توی www رو بگذارین.
نکته: روی هاست واقعی خطوط 2 و 3 باید حذف بشه.

se8820726
پنج شنبه 08 فروردین 1392, 12:17 عصر
RewriteEngine On
RewriteRule ^news/title/([^/]*)$ /news.php?title=$1 [L]



RewriteEngine on
Options +FollowSymlinks
RewriteBase /site_folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ $1.php?$2=$3 [L,QSA]


سلام آقا من از هر دوی این کدها تو فایل htaccess استفاده کردم ولی تو هر دو حالت این error رو بهم میده:



Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


لطفا دوستان راهنمایی کنید که مشکل از کجاست

Louai_M
چهارشنبه 18 دی 1392, 20:40 عصر
منم رو لوکال همین خطا را میگیره باید چکار کرد

jmpk88
شنبه 25 بهمن 1393, 09:46 صبح
سلام
من هم دقیقا به همین خطا برخورد کردم . میشه بهم بگید شما چطوری اینو مشکلو رفع کردی ؟؟
درضمن برای تمام صفحات باید تعریف کنم ؟

jmpk88
شنبه 25 بهمن 1393, 09:47 صبح
سلام
من هم دقیقا به همین خطا برخورد کردم . میشه بهم بگید شما چطوری اینو مشکلو رفع کردی ؟؟
درضمن برای تمام صفحات باید تعریف کنم ؟
ممنون دوست عزیز..

مشکل حل شد...!

jmpk88
شنبه 25 بهمن 1393, 09:48 صبح
توی لوکال هاست باید کد زیر رو بگذارین:


RewriteEngine on
Options +FollowSymlinks
RewriteBase /site_folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ $1.php?$2=$3 [L,QSA]

توضیح: بجای site_folder اسم پوشه سایتتون توی www رو بگذارین.
نکته: روی هاست واقعی خطوط 2 و 3 باید حذف بشه.




سلام
من هم دقیقا به همین خطا برخورد کردم . میشه بهم بگید شما چطوری اینو مشکلو رفع کردی ؟؟
درضمن برای تمام صفحات باید تعریف کنم ؟

The requested URL /news.php was not found on this server.

MMSHFE
شنبه 25 بهمن 1393, 09:48 صبح
توی فایل httpd.conf دنبال عبارت AllowOverride بگردین و هرجا جلوش None نوشته بود All بگذارین. ضمناً mod_rewrite رو هم فعال کنید (سمی کالن اول Load_Module اون رو بردارین). بعد از ذخیره کردن فایل، Apache رو مجدداً راه اندازی کنید.

jmpk88
شنبه 25 بهمن 1393, 09:53 صبح
توی فایل httpd.conf دنبال عبارت AllowOverride بگردین و هرجا جلوش None نوشته بود All بگذارین. ضمناً mod_rewrite رو هم فعال کنید (سمی کالن اول Load_Module اون رو بردارین). بعد از ذخیره کردن فایل، Apache رو مجدداً راه اندازی کنید.



فایل رو تغییر دادم و پیغام خطا رفع شد و هنوز به من index.php رو نشون میده بجای index. الان چکارش کنم؟

jmpk88
شنبه 25 بهمن 1393, 10:06 صبح
توی فایل httpd.conf دنبال عبارت AllowOverride بگردین و هرجا جلوش None نوشته بود All بگذارین. ضمناً mod_rewrite رو هم فعال کنید (سمی کالن اول Load_Module اون رو بردارین). بعد از ذخیره کردن فایل، Apache رو مجدداً راه اندازی کنید.


من تغییرش دادم و کد زیر رو برای index.php نوشتم


Options +FollowSymlinks
RewriteEngine On
RewriteRule ^index/([^/]*)$ /index.php $1 [L]

و هنوز به من index.php رو نشون میده بجای index. اگر میشه بهم بگید کجای این کد اشتباهه ؟ و سوال بعد اینکه برای تمام صفحات باید اون خط اخر رو تو htaccess اضافه کنم یا نه ؟؟!

MMSHFE
شنبه 25 بهمن 1393, 10:21 صبح
کلاً توی SEO باید index رو حذف کنید. مثلاً اینطوری بنویسید:

RewriteRule . index.php [L,NC,QSA]
ضمن اینکه باید دقت کنید تغییراتی که توی htaccess. میدین لینکهای شما رو تغییر نمیده بلکه فقط داره میگه اگه مدل اول وارد شد، مدل دوم رو لود کنه و لینکهایی که از قبل درست شده توی سایتتون رو خودتون باید اصلاح کنید.

jmpk88
شنبه 25 بهمن 1393, 11:27 صبح
کلاً توی SEO باید index رو حذف کنید. مثلاً اینطوری بنویسید:

RewriteRule . index.php [L,NC,QSA]
ضمن اینکه باید دقت کنید تغییراتی که توی htaccess. میدین لینکهای شما رو تغییر نمیده بلکه فقط داره میگه اگه مدل اول وارد شد، مدل دوم رو لود کنه و لینکهایی که از قبل درست شده توی سایتتون رو خودتون باید اصلاح کنید.


خب اونکه حل شد ولی یه سوال دیگه . طبق دستورات بالا من یه فایلی به نام test.php که id یک مطلب رو میگیره که تو پوشه test/untitled/ هست رو ادرس دادم

RewriteRule ^test/untitled/test([^/]*)$ test/untitled/test.php?id=$1 [L]

ولی هنوز برام ایدی مطلب رو داره نمایش میده مشکل این چیه ؟

jmpk88
شنبه 25 بهمن 1393, 12:15 عصر
من کد زیر رو تو htaccess نوشتم فقط نمایشش مشکل داره ولی به صورت دستی که تایپ میکنم مشکلی نداره. مشکل کارم کجاست ؟!Options +FollowSymLinks
RewriteEngine OnRewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-fRewriteRule ^test/index ./test/index.php
RewriteRule ^test/untitled/test(\d+)*$ ./test/untitled/test.php?id=$1

ahmad_softmin
شنبه 21 فروردین 1395, 05:47 صبح
سلام
از کدهایی که دوستان گذاشتن این کد برای من کار کرد:


RewriteRule ^member([^/]*)$ /member.php?u=$1 [L]



و اما اگر بخوام چندتا صفحه به این شکل تعریف کنم چیکار کنم؟ چون فقط یک صفحه میشه
مثل این کار نمیکنه:


RewriteRule ^member([^/]*)$ /member.php?u=$1 [L]
RewriteRule ^forum([^/]*)$ /forumdisplay.php?f=$1 [L]