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

سپتامبر 17, 2012 توسط : سعید

سلام
بنا به درخواست یکی از دوستان تصمبم گرفتم آموزش ساخت 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 میشه وگرنه به کاربر صفحه 404 نمایش داده میشه.

 

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

رو بسازن

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

موفق باشید

سپتامبر 18, 2012 @ 7:17 ق.ظ

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

پاسخ
سپتامبر 18, 2012 @ 3:37 ب.ظ

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

پاسخ
ایوب سیستم
سپتامبر 21, 2012 @ 2:03 ب.ظ

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

پاسخ
فرشاد
سپتامبر 24, 2012 @ 10:47 ب.ظ

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

پاسخ
    سعید
    سپتامبر 25, 2012 @ 9:46 ق.ظ

    سلام
    یک نکته رو همیشه در استفاده از این روشها به یاد داشته باشید و اون اینه که آدرس هایی که میدید به صورت نسبی نباشه و به صورت کامل باشه.
    مثلا
    [html]
    <img src="../images/logo.png">
    [/html]
    نباید باشه و باید به صورت زیر باشه
    [html]
    <img src="http://mysite.com/images/logo.png"&gt;
    [/html]

    پاسخ
goodboybad
اکتبر 10, 2012 @ 9:34 ق.ظ

سلام
آقا من یک سوالی داشتم . امیدوارم بتونید کمکم کنید .
من میخواهم نام ساب دامین را از ابتدا 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

پاسخ
    سعید
    اکتبر 10, 2012 @ 1:11 ب.ظ

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

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

    پاسخ
goodboybad
اکتبر 10, 2012 @ 6:48 ب.ظ

سلام

آقا جواب نداد 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

پاسخ
    سعید
    اکتبر 10, 2012 @ 11:30 ب.ظ

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

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

    پاسخ
goodboybad
اکتبر 11, 2012 @ 7:18 ب.ظ

سلام
آقا مشکلم به طور کامل حل شد . تنها مشکلی که هست مجبورم تمام آدرس دهی های نسبی تغییر بدم و آنها را به طور کامل بنویسم .
حالا قرار میدم اگر کسی هم چنین کاری خواست از این کد استفاده کنه .
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
اکتبر 12, 2012 @ 1:56 ب.ظ

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

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

پاسخ
احسان
نوامبر 5, 2012 @ 8:17 ب.ظ

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

پاسخ
    امیر
    نوامبر 26, 2012 @ 11:36 ق.ظ

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

    پاسخ
    goodboybad
    دسامبر 8, 2012 @ 10:32 ب.ظ

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

    پاسخ
      میترا
      مارس 24, 2013 @ 1:09 ب.ظ

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

      پاسخ
کاوه
نوامبر 21, 2012 @ 1:20 ق.ظ

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

پاسخ
محسن
دسامبر 5, 2012 @ 3:26 ق.ظ

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

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

پاسخ
goodboybad
دسامبر 8, 2012 @ 10:51 ب.ظ

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]]
این را تست کنید و بگید نتیجه چی نشون میده

پاسخ
جوان
دسامبر 25, 2012 @ 11:28 ب.ظ

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

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

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

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

پاسخ
    سعید
    دسامبر 26, 2012 @ 4:21 ب.ظ

    از کد زیر استفاده کنید ببینید جواب میده یا خیر :
    [php]
    RewriteEngine On
    RewriteBase mysite/
    RewriteRule ^admin/index\.php$ /admin/index.php?token=te33ev333&addid=a0d1 [L]

    [/php]

    پاسخ
      جوان
      دسامبر 26, 2012 @ 11:01 ب.ظ

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

      پاسخ
جوان
دسامبر 25, 2012 @ 11:29 ب.ظ

@$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” );
}

پاسخ
حسین
ژانویه 22, 2013 @ 4:30 ب.ظ

سلام

من اینو نوشتم:
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

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

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

پاسخ
حسین
ژانویه 23, 2013 @ 11:29 ب.ظ

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

پاسخ
میترا
مارس 24, 2013 @ 1:07 ب.ظ

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

پاسخ
    سعید
    مارس 31, 2013 @ 3:18 ب.ظ

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

    پاسخ
مارس 30, 2013 @ 11:41 ق.ظ

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.

پاسخ
میترا
می 5, 2013 @ 8:13 ب.ظ

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

پاسخ
اکتبر 18, 2013 @ 11:36 ق.ظ

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

پاسخ
نوامبر 10, 2013 @ 2:03 ب.ظ

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

پاسخ
ژانویه 6, 2014 @ 1:42 ب.ظ

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

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

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

پاسخ
    سعید
    ژانویه 6, 2014 @ 2:29 ب.ظ

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

    پاسخ
ژانویه 16, 2014 @ 3:36 ب.ظ

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

پاسخ
ژانویه 17, 2014 @ 4:21 ق.ظ

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

پاسخ
    سعید
    ژانویه 17, 2014 @ 8:35 ب.ظ

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

    پاسخ
ژانویه 28, 2014 @ 4:47 ب.ظ

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

پاسخ
ژانویه 28, 2014 @ 10:43 ب.ظ

با سلام ببخشید من توی 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
اما مقدار فرستاده نمیشه!

پاسخ
    سعید
    ژانویه 30, 2014 @ 9:04 ق.ظ

    سلام
    اينو تست كن

    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

    پاسخ
ژانویه 28, 2014 @ 10:58 ب.ظ

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

پاسخ
آوریل 7, 2014 @ 6:59 ب.ظ

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

پاسخ
navid
ژوئن 11, 2014 @ 11:39 ق.ظ

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

پاسخ
    سعید مقدم زاده
    ژوئن 12, 2014 @ 6:53 ب.ظ

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

    پاسخ
navid
ژوئن 11, 2014 @ 11:58 ق.ظ

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

پاسخ
navid
ژوئن 14, 2014 @ 11:34 ق.ظ

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

پاسخ
    سعید مقدم زاده
    جولای 4, 2014 @ 11:54 ق.ظ

    سلام ببخشید که دیر جواب دادم.
    اگه از اون ابزاری که گفتم استفاده کنی همه چی امکان پذیره.در مورد چیزی که گفتی این کار رو نمیشه انجام داد.به نظر بهتره که به صورت زیر آدرسهات رو درست کنی.
    mysite.com/companyname
    اینجوری هر شرکت اسمش رو که به انتهای آدرست اضافه کنه میره توی صفحه خودش.فقط دقت کن که برای اینکار حتما از نام های انگلیسی استفاده کنی چون اگر اسم شرکت ها فارسی باشن ممکنه بعدا به مشکل بخوری.کد htaccess هم اینطوری میشه :
    [php]
    RewriteEngine On
    RewriteRule ^([^/]*)/([^/]*)$ /companeis.php?com=$1&amp;tab=$2 [L]

    [/php]
    توی صفحه ای که میخوای اطلاعات شرکت هارو نشون بدی هم میتونی از [php] $_GET[‘com’][/php] استفاده کنی که مقدار 2492544 ( مثال خودت) توش قرار داره.

    پاسخ
navid
ژوئن 14, 2014 @ 2:16 ب.ظ

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

پاسخ
leila
نوامبر 27, 2014 @ 10:01 ق.ظ

سلام.
من دارم يك نمونه سايت طراحي ميكنم . يه فيل 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
    دسامبر 15, 2014 @ 9:15 ب.ظ

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

    پاسخ
leila
نوامبر 27, 2014 @ 10:04 ق.ظ

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

پاسخ
    جلال
    فوریه 14, 2015 @ 11:00 ق.ظ

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

    پاسخ
مصطفی
دسامبر 10, 2014 @ 5:30 ب.ظ

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

پاسخ
danialz
فوریه 2, 2015 @ 6:33 ب.ظ

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

پاسخ
    Saeed Moqadam
    آوریل 20, 2015 @ 9:15 ق.ظ

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

    پاسخ
جلال
فوریه 14, 2015 @ 10:59 ق.ظ

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

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

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

پاسخ
    Saeed Moqadam
    آوریل 20, 2015 @ 9:13 ق.ظ

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

    پاسخ
ErFUN
می 5, 2015 @ 2:00 ب.ظ

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

پاسخ
majid
ژوئن 14, 2015 @ 5:47 ب.ظ

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

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

این htaccess هست….
[php]
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);
[/php]

پاسخ
    Saeed Moqadam
    ژوئن 17, 2015 @ 7:10 ب.ظ

    کد زیر رو امتحان کنید :‌
    [php]
    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);
    [/php]

    پاسخ
ناصر
سپتامبر 27, 2015 @ 1:59 ب.ظ

سلام دوستان

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

1

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

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

1

http://localhost/detailitem/B1/14

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

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

پاسخ
    Saeed Moqadam
    اکتبر 2, 2015 @ 1:08 ب.ظ

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

    http://htaccess.phpro.ir/

    پاسخ
      ناصر
      اکتبر 28, 2015 @ 1:11 ب.ظ

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

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

      پاسخ
        Saeed Moqadam
        اکتبر 30, 2015 @ 8:31 ب.ظ

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

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

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

        پاسخ
soma
اکتبر 28, 2015 @ 11:10 ق.ظ

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

پاسخ
    Saeed Moqadam
    اکتبر 30, 2015 @ 9:07 ب.ظ

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

    RewriteEngine on

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

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

    پاسخ
soma
نوامبر 18, 2015 @ 12:40 ب.ظ

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

پاسخ
سیما
ژانویه 10, 2016 @ 8:42 ق.ظ

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

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

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

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

پاسخ
    Saeed Moqadam
    ژانویه 10, 2016 @ 8:10 ب.ظ

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

    مثلا :
    [html]
    <script src="http://domain.com/js/jquery.js"></script&gt;
    [/html]

    پاسخ
      سیما
      ژانویه 11, 2016 @ 7:49 ق.ظ

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

      پاسخ
ژانویه 11, 2016 @ 10:23 ق.ظ

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

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

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

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

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

پاسخ
محمد
می 1, 2016 @ 1:09 ق.ظ

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

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

پاسخ
    سعید
    می 2, 2016 @ 11:26 ق.ظ

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

    پاسخ
صمد
می 29, 2016 @ 12:26 ب.ظ

سلام من برای بخش محصولات وب سایتم میخوام در انتهای 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/محصول شماره 1
برای این لینک پیغام not found میده

پاسخ
    صمد
    می 29, 2016 @ 12:45 ب.ظ

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

    پاسخ
محمد
ژوئن 27, 2017 @ 10:19 ق.ظ

سلام خسته نباشید
تو همین صفحه به محتویات آدرس بار توجه کنید(http://phpro.ir/%D8%B3%D8%A7%D8%AE%D8%AA-url-%D9%87%D8%A7%DB%8C-%D8%AF%D9%84%D8%AE%D9%88%D8%A7%D9%87-%D8%A8%D8%A7-htaccess/) (کاراکتر های فارسی)
یه سایت موزیک دارم میخام این روشو روش پیاده کنم یعنی به جای پارامتر از عنوان پست استفاده کنم

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

پاسخ

دیدگاهتان را بنویسید

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


*