ساخت URL های دلخواه با htaccess

شهریور ۲۷, ۱۳۹۱ توسط : سعید

سلام
بنا به درخواست یکی از دوستان تصمبم گرفتم آموزش ساخت URL های دلخواه یا آدرسهای کاربر پسند با استفاده از htaccess رو بذارم.
مزایای اینجور آدرس دهی ها اول اینه که در موتورهای جستجو بهتر شناخته میشه.مزیت دوم هم که برای کاربراست.مثلا سایت twitter رو در نظر بگیرید »

همینطور که میبینید این آدرس پروفایل به راحتی در ذهن کاربرا و هم در ذهن موتورهای جستجو باقی میمونه.
اما آدرسهای دیگه ای مثل آدرس زیر :

http://www.domain.com/profile.php?id=1304880680&action=edit

یک آدرس کاربر پسند نیست و به راحتی نمیشه به خاطر سپردش.
برای ساخت آدرسهای کاربر پسند دو راه وجود داره.

  1.    استفاده فقط از htaccess

  2.    استفاده از htaceess و php

در هر دو راه باید از فایل htaccess استفاه بشه. پس در ابتدا به آموزش htaccess میپردازیم.

استفاده از htaccess

فایل htaccess در حقیقت فایل تنظیمات وب سرور آپاچیه.
برای ساخت آدرسهای زیبا توسط این فایل ابتدا یک فایل با نام .htaccess بسازید. سپس محتویات زیر رو داخلش بنویسید یا کپی کنید :

  Options +FollowSymLinks
  RewriteEngine On

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

  RewriteRule ^users/(\d+)*$ ./profile.php?id=$1
  RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1

  RewriteRule ^search/(.*)$ ./search.php?query=$1

حالا به معرفی و توضیح کدهای بالا میپردازیم.
خط اول ممکنه در بعضی هاست ها نیاز باشه برای همین قرارش میدیم
درخط دوم مشخص کردیم که میخوایم از RewriteEngine استفاده کنیم و این ماژول آپاچی رو فعال کردیم.
در خط سوم هیچی ننوشتیم 😀
در خط چهارم و پنجم شرطی قرار دادیم که اگر آدرس درخواستی فایل و پوشه نبود بقیه دستورات میتونن اجرا بشن.این دو شرط برای زمانیه که کاربر مثلا فایل example.com/images/logo.png فراخوانی کنه میخوایم که مستقیم فایل رو بهش نمایش بده.

سه خط آخر مهمترین دستورات ما هستن.در هر خط با استفاده از عبارات با قاعده چک میکنیم که اگر با آدرس درخواستی هم سان(مساوی ، مچ ) بود صفحه مقابلش رو لود کنه.
دستور زیر رو در نظر بگیرید :

RewriteRule ^users/(\d+)*$ ./profile.php?id=$1

در این دستور هر وقت url به صورت مثلا www.phpro.ir/user/123 بود فایل profile.php?id=123 رو درخواست میکنه و به کاربر نمایش میده.
خطوط بعدی هم همینطور.

 

اگر آدرس مساوی با قسمت rule باشه ،درخواست به  قسمت url به ارسال میشه.
RewriteRule rule url

با استفاده از این روش هر ادرسی رو که دلمون بخواد میتونیم بسازیم. اما مشکلی که این روش داره اینه که اگر تعداد صفحات سایتمون زیاد باشه باید برای همه صفحات یک دستور بنویسیم.
راه حل رفع این مشکل استفاده از روش دوم.

استفاده از htaccess به همراه php

در این روش ابتدا همه درخواست ها رو به فایل index.php ( یا هر فایلی که خواستید) میفرستید. سپس با دستورات php آدرس رو تجزیه میکنید و ازش استفاده میکنید.

برای اینکار در فایل htaccess خطوط زیر رو بنویسید ( محتویات قبلی رو پاک کنید) :

    Options +FollowSymLinks  
    RewriteEngine On  

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

RewriteRule ^(.*)$ index.php?param=$1

تنها تفاوت این فایل با قسمت قبل دستور خط آخره.
به جای نوشتن دستورات مختلف برای صفحات مختلف سایت در فایل htaccess ، در این قسمت تمام URL ها رو به فایل index.php ارسال میکنیم.که این کار به ما کمک میکنه بقیه کارها رو با دستورات پی اچ پی انجام بدیم.
همینطور که در بالا میبینید همه درخواستهارو در متغیر $_GET[‘param’] ریختیم.
حالا در فایل index.php میتونیم به راحتی از متغیر $_GET استفاده کنیم.

if(isset($_GET['param']) AND !empty($_GET['param']))
{
	$page = $_GET['param'];
	if(file_exists('pages/'.$page.'.php'))
	{
		include($page.'.php');
	}else
	{
		include('404.php'); 
	}
}else
{
	include 'main.php';
}

در ابتدا چک کردیم برای خالی نبودن و ست شدن متغیر $_GET[‘[param’] اگر شرط برقرار نبود فایل main.php یا همون صفحه اصلی سایت نمایش داده میشه. در غیر اینصورت چک کردیم که آیا فایل مورد نظر وجود داره یا خیر. اگر وجود داشت include میشه وگرنه به کاربر صفحه ۴۰۴ نمایش داده میشه.

 

ویرایش : دوستانی که با این دستورات مشکل دارن و دنبال یه راه حل ساده تر میگردن میتونن توی پستی که زیر لینکش رو گذاشتم به راحتی آدرسهای خودشون

رو بسازن

ایجاد کننده فایل htaccess

موفق باشید

بازدید : ۲۹۵۴۷

شهریور ۲۸, ۱۳۹۱ @ ۷:۱۷ ق.ظ

سلام
در خواست آموزش پنل برای در ج تبلیغات در همه صفحات سایت
ممنون می شم اگه این رو هم آموزش بدید

پاسخ دادن
شهریور ۲۸, ۱۳۹۱ @ ۳:۳۷ ب.ظ

مرسی. مفید بود … 🙂

پاسخ دادن
ایوب سیستم
شهریور ۳۱, ۱۳۹۱ @ ۲:۰۳ ب.ظ

خیلی خوب بود استاد سعید…. ارادت ♥

پاسخ دادن
فرشاد
مهر ۳, ۱۳۹۱ @ ۱۰:۴۷ ب.ظ

سلام،
من با روش اول url سایتم رو به این شکل در آوردم: news.php?id=1 -> news/1
اما بعد از اعمال تغییرات گرافیک سایت نمایش داده نیشه و فقط متن نشون میده
ممنون میشم راهنماییم بفرمایید

پاسخ دادن
    سعید
    مهر ۴, ۱۳۹۱ @ ۹:۴۶ ق.ظ

    سلام
    یک نکته رو همیشه در استفاده از این روشها به یاد داشته باشید و اون اینه که آدرس هایی که میدید به صورت نسبی نباشه و به صورت کامل باشه.
    مثلا

    <img src="../images/logo.png">
    

    نباید باشه و باید به صورت زیر باشه

    <img src="http://mysite.com/images/logo.png">
    
    پاسخ دادن
goodboybad
مهر ۱۹, ۱۳۹۱ @ ۹:۳۴ ق.ظ

سلام
آقا من یک سوالی داشتم . امیدوارم بتونید کمکم کنید .
من میخواهم نام ساب دامین را از ابتدا url حدف کنم و مثل این مثالی که در این صفحه توضیح دادید بکنم .
من تا الان تا اینجا پیش رفتم که نام ساب دامین را جدا میکند و به آخر دامین اضافه میکند .
test.domain.net
تبدیل میشه به :
domain.net/user/test/
ولی مشکلی که پیش میاد این هست که با :
http://www.domain.net
هم همین رفتارا انجام میده که من نمی خواهم چنین کاری انجام دهد .
و دوم اینکه میخواهم اگر کاربر با http://www.domain.net بخواهد وارد شود به صورت اتوماتیک وارد
domain.net شود .
و سوال دیگر من این هست که من چون نیمدونم نام ساب دامین چی هست گفتم پوشه به اسم user اضافه کنه در خط سوم که من بتوانم در خط چهارم بگم که از آدرس به اسم user به بعد هرچیزی که هست را این صفحه را باز کن .
چه راهکاری هست که من دیگه user را اضافه نکنم :
test.domain.net
میشه :
domain.net/user/test/
که من میخواهم همان domain.net/test/ باشه .
اسم ساب دامین ها هرچیزی میتونه باشه و من به همین دلیل میخواهم از این روش استفاده کنم .
کد های من به این صورت هست :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.net$ [NC]
RewriteRule ^(.*)$ http://domain.net/user/%1/$2 [QSA,R=301,L]
RewriteRule ^user/.*$ ./index.php$1

پاسخ دادن
    سعید
    مهر ۱۹, ۱۳۹۱ @ ۱:۱۱ ب.ظ

    از دستور زیر استفاده کنید ببنید جواب میده یا خیر :

    RewriteCond %{HTTP_HOST} ^(.*).domain.com
    RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
    RewriteRule ^(.*)$ http://domain.com/user/%1/$1 [P]

    پاسخ دادن
goodboybad
مهر ۱۹, ۱۳۹۱ @ ۶:۴۸ ب.ظ

سلام

آقا جواب نداد error میده . کد بالا فکر کنم $ آخر خط را فراموش کرده بودی گذاشتم ولی بازم جواب نداد .

Server error!

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.

If you think this is a server error, please contact the webmaster.
Error 500

پاسخ دادن
    سعید
    مهر ۱۹, ۱۳۹۱ @ ۱۱:۳۰ ب.ظ

    در دستور قبل به جای [P] مقدار [R=301] رو قرار بده ببین جواب میده. اگر مشکل حل نشد کد زیر رو هم امتحان کن :

    RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
    RewriteRule ^(.*)$ http://domain.com/user/%1/$1 [R=301]

    پاسخ دادن
goodboybad
مهر ۲۰, ۱۳۹۱ @ ۷:۱۸ ب.ظ

سلام
آقا مشکلم به طور کامل حل شد . تنها مشکلی که هست مجبورم تمام آدرس دهی های نسبی تغییر بدم و آنها را به طور کامل بنویسم .
حالا قرار میدم اگر کسی هم چنین کاری خواست از این کد استفاده کنه .
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.+)\.domain\.net$ [NC]
RewriteCond %{HTTP_HOST} !^www.domain.net [NC]
RewriteRule ^(.*)$ http://www.domain.net/user/%1/$2 [QSA,R=301,L]
RewriteRule ^user/.+$ ./index.php$1
RewriteCond %{HTTP_HOST} ^domain.net [NC]
RewriteRule ^(.*)$ http://www.domain.net/$1 [QSA,R=301,L]

پاسخ دادن
goodboybad
مهر ۲۱, ۱۳۹۱ @ ۱:۵۶ ب.ظ

لینک بالا یک مشکلی داشت که حالا برطرف شد :

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^papimarket.net$ [NC]
RewriteRule ^(.+)$ http://www.papimarket.net/$1 [QSA,R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\.papimarket\.net$ [NC]
RewriteCond %{HTTP_HOST} !^www.papimarket.net$ [NC]
RewriteRule ^(.*)$ http://www.papimarket.net/shop/%1/$2 [QSA,R=301,L]
RewriteRule ^shop/.*$ ./index2.php$1

پاسخ دادن
احسان
آبان ۱۵, ۱۳۹۱ @ ۸:۱۷ ب.ظ

سلام اگه بخوایم از کاراکترای فارسی واسه url استفاده کنیم چیکار کنیم؟

پاسخ دادن
    امیر
    آذر ۶, ۱۳۹۱ @ ۱۱:۳۶ ق.ظ

    چزا کسی به این سوال جواب نمیده؟؟؟؟؟؟؟؟؟؟؟؟؟

    پاسخ دادن
    goodboybad
    آذر ۱۸, ۱۳۹۱ @ ۱۰:۳۲ ب.ظ

    میشه کمی بیشتر سوالتون را توضیح دهید ؟ آیا میخواهید به این صورت باشه ؟

    پاسخ دادن
      میترا
      فروردین ۴, ۱۳۹۲ @ ۱:۰۹ ب.ظ

      مثلا اگه عنوان مطلب رو که فارسی هست بخوایم تو آدرس نمایش بدیم چطور میشه ازین استفاده کرد ، فکر کنم منظورشون همینه

      پاسخ دادن
کاوه
آذر ۱, ۱۳۹۱ @ ۱:۲۰ ق.ظ

سلام آقا سعید
من یه قسمت جستجو دارم تو سایتم که می خوام url ش تغییر کنه الان وقتی ۱۲۳۴۵ رو جستجو کنی ادرسش همچینه:
http://domin.com/sitesearch/index.php?q=12345
که من می خوام همچین بشه:
http://domin.com/search?q=12345
دقت کنید که نمی خوام بین search و ؟ اسلش داشته باشه و فایلمو تغییر نام بدم و یا جابجا کنم می خوام مثل (http://www.google.com/search?q=12345) بشه آدرسش ممنون میشم جواب تون رو داشته باشم.
مرسی از سایت آموزندتون

پاسخ دادن
محسن
آذر ۱۵, ۱۳۹۱ @ ۳:۲۶ ق.ظ

با سلام
یه راهنمایی ازتون میخوام
من یه سایت آماده رو نصب کردم و مشکلی که دارم اینه که بعد از آدرس نام برنامه میاد به این صورت
http://www.domain.com/namebarname/admin/index.php
و امکان این که سایت خارج از فولدر مربوط به نامش نصب بشه وجود نداره چون روی سرور مجازی نصب میشه با خارج کردن از فولدر به ۱۰۰۰ مشکل میخوره

با htaccess چه دستوراتی رو میشه داد که با وارد کردن مثلا آدرس
http://www.domain.com/admin/index.php
بیاد قسمت
admin/index.php
رو برداره و هنگام خواند فایل این قسمت را به http://www.domain.com/namebarname/
اضافه کنه و فایل رو از آدرس اصلی بخونه ولی در آدرس بار لینک بدون قسمت نام برنامه نمایش داده بشه
با تشکر

پاسخ دادن
goodboybad
آذر ۱۸, ۱۳۹۱ @ ۱۰:۵۱ ب.ظ

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com/index.php?q=(.+)$ [NC
RewriteRule ^(.*)$ http://www.domain.com/search?q=/%1/$2 [QSA,R=301,L]]
این را تست کنید و بگید نتیجه چی نشون میده

پاسخ دادن
جوان
دی ۵, ۱۳۹۱ @ ۱۱:۲۸ ب.ظ

این ساختار صفحه ایندکس من :

و این هم آدرس که نمایش میده
http://127.0.0.1/mysite/admin/index.php?token=te33ev333&addid=a0d1

می خوام این شکلی بشه
http://127.0.0.1/mysite/admin/index.php

ممنون میشم اگه کمک کنید

پاسخ دادن
    سعید
    دی ۶, ۱۳۹۱ @ ۴:۲۱ ب.ظ

    از کد زیر استفاده کنید ببینید جواب میده یا خیر :

    RewriteEngine On
    RewriteBase  mysite/
    RewriteRule ^admin/index\.php$ /admin/index.php?token=te33ev333&addid=a0d1 [L]
    
    
    پاسخ دادن
      جوان
      دی ۶, ۱۳۹۱ @ ۱۱:۰۱ ب.ظ

      سلام ممنون از لطف شما
      نشد
      راستی نمیشه بجای این ساختار مثلا از post یا سشن استفاده کرد
      چون من از get استفاده کردم
      چرا گوگل از این ساختار استفاده می کنه

      پاسخ دادن
جوان
دی ۵, ۱۳۹۱ @ ۱۱:۲۹ ب.ظ

@$token = mysql_real_escape_string($_REQUEST[‘token’]);
if ( $token )
{
switch ($token)
{
case “te00ev000”:
include( “admin.php” );
break;

case “te01ev010”:
include( “logout.php” );
break;

case “te02ev020”:
include( “user.php” );
break;
}
}
else
{
include( “info.php” );
}

پاسخ دادن
حسین
بهمن ۳, ۱۳۹۱ @ ۴:۳۰ ب.ظ

سلام

من اینو نوشتم:
RewriteRule ^name/(.*)/family/(.*)$ index.php?n=$1&o=$2 [QSA,R=301,L]

و این که باز میکنم: name/n/family/f درسته

ولی اگر اینم تو ادرس بزنم: n=ss&o=dd باز میکنه
میخوام وقتی مثلا اینو زدم n=ss&o=dd دایورت کنه روی name/ss/family/dd مثلا

یعنی الان من با دو تا ادرس باز میشه

ادرس زیر رو نگاه این کنید:

whois.irdomain.com/?domain_info=phpro.ir

وقتی باز میشه میره روی ادرس جدید!! یعنی علامت سوالی بودنش حذف میشه !!! ولی مال من هم ادرس قدیم کار میکنه و هم جدید
میخوام قدیم که به صورت علامت سوال هست دیگه باز نشه

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

پاسخ دادن
حسین
بهمن ۴, ۱۳۹۱ @ ۱۱:۲۹ ب.ظ

یعنی کسی اینجا ینست جواب منو بده؟؟؟؟؟؟؟؟؟؟؟؟ کارم گیره بخدا

پاسخ دادن
میترا
فروردین ۴, ۱۳۹۲ @ ۱:۰۷ ب.ظ

این راه میتونه به امنیت هم کمک کنه؟

پاسخ دادن
    سعید
    فروردین ۱۱, ۱۳۹۲ @ ۳:۱۸ ب.ظ

    سلام
    بله تا مقداری میتونه به امنیت کمک کنه.اما بازم نباید بقیه مسایل امنیتی رو نادیده بگیرید.
    موفق باشید

    پاسخ دادن
فروردین ۱۰, ۱۳۹۲ @ ۱۱:۴۱ ق.ظ

I am extremely impressed with your writing skills and also with
the layout on your weblog. Is this a paid
theme or did you modify it yourself? Anyway keep up the excellent quality writing, it’s rare to see a great blog like this one nowadays.

پاسخ دادن
میترا
اردیبهشت ۱۵, ۱۳۹۲ @ ۸:۱۳ ب.ظ

اگه با استفاده از htaccess دسترسی به فایلها رو ببندیم مثلا فایل هایی که پسوندشون txt هست ، در این صورت موتور جستجوگر هم نمیتونه به robots.txt دسترسی پیدا کنه؟

پاسخ دادن
مهر ۲۶, ۱۳۹۲ @ ۱۱:۳۶ ق.ظ

یکی از بهترین و آموزنده ترین مطالبی بود که خوندم برای من بسیار جالب بود
ممنون

پاسخ دادن
آبان ۱۹, ۱۳۹۲ @ ۲:۰۳ ب.ظ

سلام من از روش دومتون استفاده کردم حالا وقتی میخام کد ajax بنویسم کار نمیده همشون میرن سمت ایندکس،چجوری باید درستش کنم؟

پاسخ دادن
دی ۱۶, ۱۳۹۲ @ ۱:۴۲ ب.ظ

سلام .
من در ساخت یک اسکریپت نیاز به این امکان دارم .
من از کد زیر استفاده می کنم
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(\d+)*$ ./user.php?id=$1

اما یک مشکل هست که اگر در آدرس عدد وارد کنیم اجرا می شود ولی اگر حروف باشه با اررور ۴۰۴ روبرو می شه
مثلا :
domain.com/12 = ok
domain.com/ali = 404
روش دوم user.php رو بجای ali بازخورد می کنه مشکل کجاست ؟

پاسخ دادن
    سعید
    دی ۱۶, ۱۳۹۲ @ ۲:۲۹ ب.ظ

    سلام
    خط سوم رو به صورت زیر بنویسید :
    RewriteRule ^(.*)$ ./user.php?id=$1

    پاسخ دادن
دی ۲۶, ۱۳۹۲ @ ۳:۳۶ ب.ظ

درود واقعا عالی هستش
سپاس از شما دوست عزیز به خاطر این آموزش
خیلی به دردم خورد

پاسخ دادن
دی ۲۷, ۱۳۹۲ @ ۴:۲۱ ق.ظ

با سلام :
میتونین در باره این موضوع کمکم کنید ؟
من تو هاستم یه فولدر دارم که درون اون فولدر تعدادی صفحه ساختم میخوام کاربرام به جای اینکه ادرس صفحه رو به این صورت مشاهده کنن mysite.com/users/index.php?user=jafar
در حال حاضر ادرس رو به این صورت مشاهده میکنن
mysite.com/users/jafar.php
من پی اچ پی بلد نیستم
ممنون میشم کمکم کنید

پاسخ دادن
    سعید
    دی ۲۷, ۱۳۹۲ @ ۸:۳۵ ب.ظ

    سلام
    در صورتی میتونم کمک کنم که شما پی اچ پی بلد باشی.به خاطر اینکه اینکار شما پیش نیاز زیاد داره.
    موفق باشید

    پاسخ دادن
بهمن ۸, ۱۳۹۲ @ ۴:۴۷ ب.ظ

با سلام!به نظرم این کار هیچ اثری رو امنیت نداره چون ممکنه هکر در دامین ای دی یک کد injection وارد کنه!

پاسخ دادن
بهمن ۸, ۱۳۹۲ @ ۱۰:۴۳ ب.ظ

با سلام ببخشید من توی htaccess خودم اینو وارد کردم:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^rezume/(\d+)*$ showRezume.php?id=$1
RewriteRule ^editRezume/(\d+)*$ editRezume.php
RewriteRule ^setting/(\d+)*$ setting.php
اما مقدار فرستاده نمیشه!

پاسخ دادن
    سعید
    بهمن ۱۰, ۱۳۹۲ @ ۹:۰۴ ق.ظ

    سلام
    اینو تست کن

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^rezume/(\d+*)$ showRezume.php?id=$1
    RewriteRule ^editRezume/(\d+*)$ editRezume.php?id=$1
    RewriteRule ^setting/(\d+*)$ setting.php?id=$1

    پاسخ دادن
بهمن ۸, ۱۳۹۲ @ ۱۰:۵۸ ب.ظ

با سلام من کد هارو امتحان کردم ولی مقدار id رو نمی فرسته چیکار کنم اقا سعید؟

پاسخ دادن
فروردین ۱۸, ۱۳۹۳ @ ۶:۵۹ ب.ظ

برای متون فارسی باید چه کار کنیم؟؟؟

پاسخ دادن
navid
خرداد ۲۱, ۱۳۹۳ @ ۱۱:۳۹ ق.ظ

با سلام و تشکر از مطلب مفیدتون
من یه سایت دارم که شرکت های مختلف توش عضو میشن
و برای هر کدوم یه صفحه داریم که محصولاتشون رو توش نشون میدن
برا هر کدوم یه ادرسی (http://my site.com/companeis.php?com=31218779165760&tab=hom#)درست میشه که اصلا جالب نیست
حالا میخوام یه ادرس باحال داشته باشه مثل (http://my site.com/test) که test اسم شرکتی باشه که تو سایت من ثبت نام کرده ،و وقتی کسی بخواد از سایتش بازدید کنه بزنه (http://my site.com/test) میشه کمکم کنید
ممنون

پاسخ دادن
    سعید مقدم زاده
    خرداد ۲۲, ۱۳۹۳ @ ۶:۵۳ ب.ظ

    سلام دوست عزیز.
    برای اینکار توی این پست یک ابزار رو معرفی کردم که به راحتی میتونید آدرسهای خودتون رو بسازید.

    پاسخ دادن
navid
خرداد ۲۱, ۱۳۹۳ @ ۱۱:۵۸ ق.ظ

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

پاسخ دادن
navid
خرداد ۲۴, ۱۳۹۳ @ ۱۱:۳۴ ق.ظ

سلام جناب مقدم زاده عزیز
واقعا ممنونم
ببینید من میخوام اگه بشه اول اسم اون صفحه رو بیارم و بعد اسم دامین رو یعنی
(http://my site/companeis.php?com=2492544&tab=hom) تبدیل بشه به
(http://companyname/mysite.com)
یعنی اسم شرکت بیاد اول
ممنون

پاسخ دادن
    سعید مقدم زاده
    تیر ۱۳, ۱۳۹۳ @ ۱۱:۵۴ ق.ظ

    سلام ببخشید که دیر جواب دادم.
    اگه از اون ابزاری که گفتم استفاده کنی همه چی امکان پذیره.در مورد چیزی که گفتی این کار رو نمیشه انجام داد.به نظر بهتره که به صورت زیر آدرسهات رو درست کنی.
    mysite.com/companyname
    اینجوری هر شرکت اسمش رو که به انتهای آدرست اضافه کنه میره توی صفحه خودش.فقط دقت کن که برای اینکار حتما از نام های انگلیسی استفاده کنی چون اگر اسم شرکت ها فارسی باشن ممکنه بعدا به مشکل بخوری.کد htaccess هم اینطوری میشه :

    RewriteEngine On
    RewriteRule ^([^/]*)/([^/]*)$ /companeis.php?com=$1&amp;tab=$2 [L]
    
    

    توی صفحه ای که میخوای اطلاعات شرکت هارو نشون بدی هم میتونی از

     $_GET['com']

    استفاده کنی که مقدار ۲۴۹۲۵۴۴ ( مثال خودت) توش قرار داره.

    پاسخ دادن
navid
خرداد ۲۴, ۱۳۹۳ @ ۲:۱۶ ب.ظ

ممنون میشم اگه بگید ایا میتونم تو این دستورات، دستورات php رو قرار بدم ؟ راستش میخوام اسم شرکت رو از db بیاره ، اینجوری باشه که هر کسی عضو سایت میشه یه صفحه بهش داده میشه که محصولاتش رو اون تو بزاره ، حالا url هر کسی اسم شرکتش و به دنیال اون اسم سایت من باشه .
بازم ممنونم

پاسخ دادن
leila
آذر ۶, ۱۳۹۳ @ ۱۰:۰۱ ق.ظ

سلام.
من دارم یک نمونه سایت طراحی میکنم . یه فیل htaccess دارم. ولی هیچ کدوم از فایلهای css ,jquery رو اجرا نمیکنه.
تو htaccess اینا هست:
RewriteEngine on

RewriteCond %{REQUEST_FILENAME}% !-d

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

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

پاسخ دادن
    Saeed Moqadam
    آذر ۲۴, ۱۳۹۳ @ ۹:۱۵ ب.ظ

    هنگامی که از htaccess استفاده میکنید باید آدرس فایلهای css و js رو به صورت کامیل بدید مثلا http://eeeeeee.com/js/jquery.js

    پاسخ دادن
leila
آذر ۶, ۱۳۹۳ @ ۱۰:۰۴ ق.ظ

راستی یادم رفت بگم .
هم تو netbeanz و هم تو dreamvewear امتحان کردم.
همه ی صفحاتو باز میکنه اما فایلهای css ,jqueyرو اجرا نمیکنه

پاسخ دادن
    جلال
    بهمن ۲۵, ۱۳۹۳ @ ۱۱:۰۰ ق.ظ

    باید ادرسها رو کامل بزارید

    پاسخ دادن
مصطفی
آذر ۱۹, ۱۳۹۳ @ ۵:۳۰ ب.ظ

روش دوم که با پی اچ پی هم هست دارای باگ lfi میباشد
اگه بخوایم اینطوری باهاش کار کنیم
http://localhost/index.php?param=$_GET%5B'param'%5D
میتونیم به فایل هایی که نباید به آن ها دسترسی داشته باشیم،دسترسی داشته باشیم

پاسخ دادن
danialz
بهمن ۱۳, ۱۳۹۳ @ ۶:۳۳ ب.ظ

باسلام , فرقی میکنه اگه اسم فایل با پسوند htaccess چی باشه ؟
به طور معمول از چه اسمی استفاده میشه ؟
میشه توضیح بدید !؟

پاسخ دادن
    Saeed Moqadam
    فروردین ۳۱, ۱۳۹۴ @ ۹:۱۵ ق.ظ

    خیر باید حتما htaccess باشه اما توی تنظیمات آپاچی میتونید اسم فایل رو تغییر بدید

    پاسخ دادن
جلال
بهمن ۲۵, ۱۳۹۳ @ ۱۰:۵۹ ق.ظ

سلام من کد زیر رو نوشتم و صفحه index.php رو همچنان نشون میده و درحالی که میخوام index خالی رو نشون بده.

اگر میشه بگید کجای کدم مشکل داره ؟

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

پاسخ دادن
    Saeed Moqadam
    فروردین ۳۱, ۱۳۹۴ @ ۹:۱۳ ق.ظ

    کد بالا میگه وقتی آدرسی به شکل index/ اومد صفحه index.php رو بهم نمایش بده.
    شما اگه index خالی هم بزنی باید نمایش بده

    پاسخ دادن
ErFUN
اردیبهشت ۱۵, ۱۳۹۴ @ ۲:۰۰ ب.ظ

برای رفع احتمالی باگ lfi میتونید این کد به قبل include($page.’.php’); اضافه کنیم (:
$page=Replace($page, “/”, “”);
$page=Replace($page, “.”, “”);

پاسخ دادن
majid
خرداد ۲۴, ۱۳۹۴ @ ۵:۴۷ ب.ظ

سلام
من همه کار هارو کردم مشکل اینجاست که….
وقتی نشانی صفحه رو وارد می کنم حتما باید عدد باشه نشانی و حروف رو قبول نمی کنه
برای مثال :
http://www.domain.ir/news.php?namak=11
رو قبول می کنه ولی
http://www.domain.ir/news.php?namak=majid
رو قبول نیم کنه

می شه راهنمایی کنید

این htaccess هست….

  Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^([^A-Za-z0-9].*)$ news.php?namak=$1 [L,QSA]

&lt;?php
if(isset($_GET[&#039;namak&#039;]))
{
$newsnamak=clean($_GET[&#039;namak&#039;]);
$query  = &quot;SELECT * FROM news where namak=$newsnamak&quot;;
$result = mysql_query($query) or die(mysql_error());
$row=mysql_fetch_assoc($result);
پاسخ دادن
    Saeed Moqadam
    خرداد ۲۷, ۱۳۹۴ @ ۷:۱۰ ب.ظ

    کد زیر رو امتحان کنید :‌

      Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
    RewriteRule ^([A-Za-z0-9].*)$ news.php?namak=$1 [L,QSA]
    
    &amp;lt;?php
    if(isset($_GET[&amp;#039;namak&amp;#039;]))
    {
    $newsnamak=clean($_GET[&amp;#039;namak&amp;#039;]);
    $query  = &amp;quot;SELECT * FROM news where namak=$newsnamak&amp;quot;;
    $result = mysql_query($query) or die(mysql_error());
    $row=mysql_fetch_assoc($result);
    
    پاسخ دادن
ناصر
مهر ۵, ۱۳۹۴ @ ۱:۵۹ ب.ظ

سلام دوستان

آدرس سایت به این شکل است :

۱

http://localhost/detailitem.php?scat=B1&id=14

میخام با استفاده از htaccess ادرس صفحه من به این شکل نمایش داده شود :

۱

http://localhost/detailitem/B1/14

لطفا راهنمایی کنید که چجوری میتونم آدرس خودم را به شکل مد نظر تغییر بدم.

RewriteMode هم در وب سرور آپاچی من فعال می باشد.
صفحه detailitem.php در روت اصلی هاست قرار دارد.

پاسخ دادن
    Saeed Moqadam
    مهر ۱۰, ۱۳۹۴ @ ۱:۰۸ ب.ظ

    میتونید از سرویس زیر استفاده کنید :

    http://htaccess.phpro.ir/

    پاسخ دادن
      ناصر
      آبان ۶, ۱۳۹۴ @ ۱:۱۱ ب.ظ

      سلام دوست عزیز
      این سایت رو قبلا امتحان کردم . کدی که تولید میکنه رو میزارم درست میشه ولی کل گرافیک سایت به هم میریزه . انگار فایل های image , css , … لود نمیشن چون آدرس عوض شده انگار.

      موندم چیکار کنم در صورتی که خیلی از سایت ها اینکار رو به راحتی انجام دادن

      پاسخ دادن
        Saeed Moqadam
        آبان ۸, ۱۳۹۴ @ ۸:۳۱ ب.ظ

        برای اینکار باید آدرس عکسها و فایلهای css رو کامل بدی . یعنی اگر مثل زیر آدرس دهی کردی :

        باید به صورت زیر باشه :

        برای فایلهای سی اس اس و جاوااسکریپت هم همینطور.
        موفق باشید

        پاسخ دادن
soma
آبان ۶, ۱۳۹۴ @ ۱۱:۱۰ ق.ظ

سلام خسته نباشید
من یه سایت دارم با آدرس زیر
http://www.mysite.com/blog
که توی پوشه blog وردپرس نصب کردم
و ریدایرکت زدم به پوشه blog
حالا میخوام اسم پوشه blog رو از url نمایشی به کاربر حذف کنم
در واقع میخوام مسیر سایتی که به کاربر نشون میده به شکل زیر باشه:
http://www.mysite.com
البته نمیخوام محتویات پوشه رو جابه جا کنم یا بیارمش به root با همون ریدایرکت محتویات رو نشون بده آما مسیر سایت مسیر روت و بدون blog باشه
راهنمایی می کنید دوستان؟

پاسخ دادن
    Saeed Moqadam
    آبان ۸, ۱۳۹۴ @ ۹:۰۷ ب.ظ

    از کد زیر استفاده کن :

    RewriteEngine on

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

    RewriteRule ^(/)?$ blog/ [L]

    پاسخ دادن
soma
آبان ۲۷, ۱۳۹۴ @ ۱۲:۴۰ ب.ظ

کد رو گذاشتم اما درست نشد 🙁

پاسخ دادن
سیما
دی ۲۰, ۱۳۹۴ @ ۸:۴۲ ق.ظ

با سلام الان چند روزه منتظر پاسخ سوالم هستم ناچار شدم از این قسمت مزاحم بشم ممنون میشم وقت بزارید پاسخ بدید

بنده در قسمت بازنویسی url در فایل htaccess از دستورات زیر برای کارم استفاده میکنم با این دستورت به صفحه مقصد هم میره ولی در اونجا یعنی صفحه مقصد عکس ها وپلاگین ها رو نمیتونه لود کنه

RewriteEngine On
RewriteRule ^mahsool/([0-9]+) /mahsool.php?idmahsool=$1

استاد گرامی ممنون میشم پاسخ بدید چون به کمک نیاز دارم

پاسخ دادن
    Saeed Moqadam
    دی ۲۰, ۱۳۹۴ @ ۸:۱۰ ب.ظ

    برای لود کردن عکسها و استایل ها و فایلهای جاوااسکریپت باید مسیر رو به صورت کامل وارد کنید.

    مثلا :

    <script src="http://domain.com/js/jquery.js"></script>
    
    پاسخ دادن
      سیما
      دی ۲۱, ۱۳۹۴ @ ۷:۴۹ ق.ظ

      آقا من واقعا ازت ممنونم

      پاسخ دادن
دی ۲۱, ۱۳۹۴ @ ۱۰:۲۳ ق.ظ

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

من برای استفاده از غ=فایل htaccess روی xamp مشکل دارم.در واقع دستوراتی که در فایل htaccess مینویسم روی هاست درست کار میکنه ولی روی xamp خطایpage notfound رو میده

این کار رو هم روی xamp انجام دادم
حذف # از ابتدای خط

LoadModule rewrite_module modules/mod_rewrite.so
و همچنین فایل htaccess رو هم در پوشه htdocs میریزم ولی درست کار نمیکنه

لطف میکنید در حقم اگر حلش کنید

پاسخ دادن
محمد
اردیبهشت ۱۲, ۱۳۹۵ @ ۱:۰۹ ق.ظ

سلام اقا سعید .
من دارم یک cms مینویسم .
لینک هر پست من به این شکله : site.com/post.php?id=30
من با روش شما اونو تبدیل کردم به این : site.com/post/30

تنها مشکلی ککه الان دارم اینه که هر دو لینک الان برام بز میشه و محتوای سایت نشون داده میشه . اینطوی که گوگل با دوتا صفحه به یک مطلب من میرسه و بد تر میشه سئوی من .
باید چیکار کنم تا لینک اولی رو که یکی مینویسه بندازمش صفحه اسلی یا ارور بهش بدم ؟
ممنون میشم راهنماییم کنید .

پاسخ دادن
    سعید
    اردیبهشت ۱۳, ۱۳۹۵ @ ۱۱:۲۶ ق.ظ

    سلام
    اگر توی سایتتون لینکی به آدرس اول یعنی site.com/post.php?id=40 نداشته باشید گوگل اون رو ایندکس نمیکنه.

    پاسخ دادن
صمد
خرداد ۹, ۱۳۹۵ @ ۱۲:۲۶ ب.ظ

سلام من برای بخش محصولات وب سایتم میخوام در انتهای url ام نام و یسری از مشخصات محصول رو بصورت فارسی مثل digikala قرار بدم . لینکم بدون کارکترهای فارسی انتهایی درست کار میکنه اما زمانی که متن فارسی رو به انتهای لینک اضافه میکنم پیغام not found میده . لطفا اگه امکانش هست راهنماییم کنید.

دستور rewrite:
RewriteRule ^Details/MK-(.*)/(.*)*$ ./properties.php?MKI=$1 [NC]

http://www.shop.ir/Details/MK-12345/ این لینک درست عمل میکنه

http://www.shop.ir/Details/MK-12345/محصول شماره ۱
برای این لینک پیغام not found میده

پاسخ دادن
    صمد
    خرداد ۹, ۱۳۹۵ @ ۱۲:۴۵ ب.ظ

    RewriteRule ^Details/MK-(.*)/(.+) ./properties.php?MKI=$1 [NC]
    جواب رو پیدا کردم . اینجا میزارم تا دوستانی که میخوان استفده کنن .باید RewriteRule رو به این شکل تغییر بدین

    پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*