-
January 17th, 2017, 09:58
#1
عضو انجمن
کمک برای نوشتن یک خط دستور htaccess
سلام و خسته نباشید
من نیاز به یک راهنمائی دارم
فرض کنیم آدرس من بدین صورت هست
https://exp.com/Product/DKP-147243/T...A7%D8%B1%D8%AA
حالا یا هر آدرس دیگه ای
من میخوام به جز آدرس سایتم بقیه آدرس گذاشته بشه توی یک متغییر و ارجاع داده بشه به یک فایل
مثلا:
https://exp.com/Product/DKP-147243/TP-LINK-Neffos-C5
وقتی کاربر میاد به این آدرس بره فایل ABC.php رو باز کنه و مقدار (قرمز و بولد شده) رو بذاره توی متغییر H
ممنون میشم راهنمائیم بکنید
-
-
January 17th, 2017 09:58
# ADS
-
January 17th, 2017, 10:08
#2
پاسخ : کمک برای نوشتن یک خط دستور htaccess
سلام
بررسی کنید :
کد HTML:
RewriteEngine On
RewriteRule ^/([^/]*)$ /ABC.php?h=$1 [L]
-
تعداد تشکر ها از dow به دلیل پست مفید
-
January 17th, 2017, 10:22
#3
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
dow
سلام
بررسی کنید :
کد HTML:
RewriteEngine On
RewriteRule ^/([^/]*)$ /ABC.php?h=$1 [L]
نه داداش کار نکرد
من تو فایل abc.php مقدای h رو به روش زیر میگیرم
$t=POST_GET['h'];
اصلا فک کنم به فایل abc وصل نشده، چون Echo هم زده بودم مقدار دریافتی رو نشون بده، خطای 404 میده
-
-
January 17th, 2017, 10:28
#4
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
iroo
نه داداش کار نکرد
من تو فایل abc.php مقدای h رو به روش زیر میگیرم
$t=POST_GET['h'];
اصلا فک کنم به فایل abc وصل نشده، چون Echo هم زده بودم مقدار دریافتی رو نشون بده، خطای 404 میده
جسارتاً POST_GET ندارید یا POST باید باشه یا GET.
شما باید اینطوری اطلاعات رو بگیری:
-
تعداد تشکر ها از AtrafNet به دلیل پست مفید
-
January 17th, 2017, 10:34
#5
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
AtrafNet
جسارتاً POST_GET ندارید یا POST باید باشه یا GET.
شما باید اینطوری اطلاعات رو بگیری:
سلام
اره اره، اول صبحی گیج میزنم
درستش کردم
خطای 404 میده
-
-
January 17th, 2017, 12:15
#6
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
iroo
سلام
اره اره، اول صبحی گیج میزنم
درستش کردم
خطای 404 میده
من راه با htaccess. رو بلد نیستم اما یه راه ساده با خود php هستش که اونم گرفتن آدرس Request و جدا کردن متن بعد از هر اسلش ( / ) در یه array هستش اینطوری:
کد PHP:
<?php
$url = explode('/', $_SERVER['REQUEST_URI']);
print_r($url);
الان خروجی دستور بالا برای شما باید یه چیزی مثل این باشه:
کد:
Array ( [0] => [1] => Product [2] => DKP-147243 [3] => TP-LINK-Neffos-C5 )
که همونطور که می بینید بر اساس یه عدد میشه به هر متن داخل URL دسترسی داشت مثلاً برای فهمیدن نام محصول می تونیم از کد زیر استفاده کنیم:
اما خب این روش شاید در موارد کوچک به کار بیاد ولی در موارد بزرگتر یکم غیر استاندارد به نظر میاد 
توابع استفاده شده یکی explode برای تقسیم یک رشته بر اساس کاراکتری خاص به یک آرایه هست: http://php.net/manual/en/function.explode.php
یکی هم متغیر سراسری SERVER که اطلاعات خیلی بیشتری به جز همین REQUEST_URI میشه ازش گرفت که تو این لینک نوشته: http://php.net/manual/en/reserved.variables.server.php
-
تعداد تشکر ها از AtrafNet به دلیل پست مفید
-
January 17th, 2017, 12:18
#7
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
AtrafNet
من راه با htaccess. رو بلد نیستم اما یه راه ساده با خود php هستش که اونم گرفتن آدرس Request و جدا کردن متن بعد از هر اسلش ( / ) در یه array هستش اینطوری:
کد PHP:
<?php
$url = explode('/', $_SERVER['REQUEST_URI']);
print_r($url);
الان خروجی دستور بالا برای شما باید یه چیزی مثل این باشه:
کد:
Array ( [0] => [1] => Product [2] => DKP-147243 [3] => TP-LINK-Neffos-C5 )
که همونطور که می بینید بر اساس یه عدد میشه به هر متن داخل URL دسترسی داشت مثلاً برای فهمیدن نام محصول می تونیم از کد زیر استفاده کنیم:
اما خب این روش شاید در موارد کوچک به کار بیاد ولی در موارد بزرگتر یکم غیر استاندارد به نظر میاد
توابع استفاده شده یکی explode برای تقسیم یک رشته بر اساس کاراکتری خاص به یک آرایه هست:
http://php.net/manual/en/function.explode.php
یکی هم متغیر سراسری SERVER که اطلاعات خیلی بیشتری به جز همین REQUEST_URI میشه ازش گرفت که تو این لینک نوشته:
http://php.net/manual/en/reserved.variables.server.php
سلام
والله آدرس های من اصلا ساختار منظم و مرتبی ندارن و از طرفی هم ثابت نیستند شاید 100 مدل آدرس دهی باشه
تنها کاری که میخوام بکنم اینه که یوزر هر آدرسی که دلش میخواد بده، هر آدرسی.... مثلا
exp.com/asdasd
exp.com/sdfsa/asdaws/afwew/34545
exp.com/1240*-/w454
exp.com/فارسی
حالا کاری که من میخوام این هست، آدرس یوزر رو بگیره (البته به جز اسم دامنه) بعدش بذاره توی یه متغییر
حالا ما باید توی htaccess اینو پیاده کنیم
ولی بلد نیستم
-
-
January 17th, 2017, 12:29
#8
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
iroo
سلام
والله آدرس های من اصلا ساختار منظم و مرتبی ندارن و از طرفی هم ثابت نیستند شاید 100 مدل آدرس دهی باشه
تنها کاری که میخوام بکنم اینه که یوزر هر آدرسی که دلش میخواد بده، هر آدرسی.... مثلا
exp.com/asdasd
exp.com/sdfsa/asdaws/afwew/34545
exp.com/1240*-/w454
exp.com/فارسی
حالا کاری که من میخوام این هست، آدرس یوزر رو بگیره (البته به جز اسم دامنه) بعدش بذاره توی یه متغییر
حالا ما باید توی htaccess اینو پیاده کنیم
ولی بلد نیستم
ببینید اگه فقط مشکل گرفتن هر آدرس مختلفی هست که با همین روشی که گفتم میشه فقط یادم رفت بگم همین روشی که گفتم هم نیاز به کد htaccess. شبیه کد htaccess. وردپرس داره که تمامی Request ها رو به فایل php شما بده و شما پردازش کنی و بر اساس اون URL محتوا رو نشون بدی کاری که وردپرس دقیق انجام میده و تمامی Request ها رو به فایل index.php میده.
وردپرس برای این کار از این کد در فایل htaccess. استفاده میکنه که من خودم به شخصه همینو تو خیلی از پروژه های شخصی خودم هم کپی کردم و براحتی کار کرده 
کد:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
اینو وقتی تو فایل htaccess. بذارید دیگه هر چی کاربر تو آدرس بنویسه میره به همون فایلی که در خط یکی مونده به آخر این کد اشاره شده اما این کد URL رو در یه Query String قرار نمیده که بتونید بر اساس متد GET بگیریدشون به همین دلیل باید با روشی که بالا گفتم یعنی تابع explode و آیتم REQUEST_URI داخل آرایه سراسری SERVER آدرسی که کاربر بعد از دامنه شما نوشته رو پیدا کنید.البته اگر این آدرس رو کامل و بدون نیاز به تقسیم بر اساس هر اسلش داشته باشید می تونید براحتی تابع explode رو حذف کنید و فقط از آیتم REQUEST_URI داخل آرایه SERVER استفاده کنید.
ویرایش توسط AtrafNet : January 17th, 2017 در ساعت 12:30
-
تعداد تشکر ها از AtrafNet به دلیل پست مفید
-
January 17th, 2017, 12:36
#9
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
AtrafNet
ببینید اگه فقط مشکل گرفتن هر آدرس مختلفی هست که با همین روشی که گفتم میشه فقط یادم رفت بگم همین روشی که گفتم هم نیاز به کد htaccess. شبیه کد htaccess. وردپرس داره که تمامی Request ها رو به فایل php شما بده و شما پردازش کنی و بر اساس اون URL محتوا رو نشون بدی کاری که وردپرس دقیق انجام میده و تمامی Request ها رو به فایل index.php میده.
وردپرس برای این کار از این کد در فایل htaccess. استفاده میکنه که من خودم به شخصه همینو تو خیلی از پروژه های شخصی خودم هم کپی کردم و براحتی کار کرده
کد:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
اینو وقتی تو فایل htaccess. بذارید دیگه هر چی کاربر تو آدرس بنویسه میره به همون فایلی که در خط یکی مونده به آخر این کد اشاره شده اما این کد URL رو در یه Query String قرار نمیده که بتونید بر اساس متد GET بگیریدشون به همین دلیل باید با روشی که بالا گفتم یعنی تابع explode و آیتم REQUEST_URI داخل آرایه سراسری SERVER آدرسی که کاربر بعد از دامنه شما نوشته رو پیدا کنید.البته اگر این آدرس رو کامل و بدون نیاز به تقسیم بر اساس هر اسلش داشته باشید می تونید براحتی تابع explode رو حذف کنید و فقط از آیتم REQUEST_URI داخل آرایه SERVER استفاده کنید.
جالبه
بازم خطای 404 میده
فایل htaccess همونی هست که شما گفتی فقط فایل ایندکس رو زدم abc
توفایل abc.php هم این دستور رو نوشتم
echo $_SERVER['REQUEST_URI'];
- - - Updated - - -
میشه شما یه نمونه فایل بدین ؟
-
-
January 17th, 2017, 12:49
#10
عضو انجمن
پاسخ : کمک برای نوشتن یک خط دستور htaccess

نوشته اصلی توسط
iroo
جالبه
بازم خطای 404 میده
فایل htaccess همونی هست که شما گفتی فقط فایل ایندکس رو زدم abc
توفایل abc.php هم این دستور رو نوشتم
echo $_SERVER['REQUEST_URI'];
- - - Updated - - -
میشه شما یه نمونه فایل بدین ؟
وب سرور هاست شما چیه؟ میگم اگه NginX باشه کار نمیکنه.
بعدش باید mod_rewrite هم روی آپاچی فعال باشه البته LiteSpeed هم سازگاره.
این مورد رو من بار ها تست کردم و مشکلی نبوده و مثال خاصی هم نیاز نداره همینی که شما انجام دادید هم باید کار کنه فقط فایل htaccess. باید دقیق کنار فایل php مورد نظر باشه تا کار کنه.
-