PDA

View Full Version : سوال: تغییر ادرس لینک و حذف php. از آدرس ها



MohammadGh2011
سه شنبه 19 شهریور 1398, 20:46 عصر
درود بر شما
چطور میشه لینک صفحات رو تغییر داد برای مثل سایتی رو داریم اینطوری
https://x.ir/Actions/join.php
حالا میخوایم ادرسش بشه این: https://x.ir/Actions/join
یعنی پسوند .php حذف بشه از تمام صفحاتمون

اینکار چطور امکان پذیره؟
ممنون میشم کامل و با مثال و کد یکی توضیح بده


سپاس

MiladWorkShop
سه شنبه 19 شهریور 1398, 21:21 عصر
سلام

توی هاستتون یک فایل htaccess ایجاد کنید و کد زیر رو درون اون قرار بدید :

https://askoverflow.ir/paste/9yjEVA

MohammadGh2011
سه شنبه 19 شهریور 1398, 23:47 عصر
سلام

توی هاستتون یک فایل htaccess ایجاد کنید و کد زیر رو درون اون قرار بدید :

https://askoverflow.ir/paste/9yjEVA
درود بر شما

فایل .htaccess اصلیم به صورت زیر هستش که http رو به صورت خودکار منتقل کنه به https


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]



اما چیزی که شما گذاشتی ، یه فایل تو پوشه action درست کردم به نام htaccess و کدی که گذاشتید رو ذخیره کردم:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php


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


ممنون میشم بیشتر توضیح بدی عزیز

MiladWorkShop
چهارشنبه 20 شهریور 1398, 00:03 صبح
بله, این راه اصولی هست و عموماً به همین شکل استفاده میشه

کد کامل :


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

MohammadGh2011
چهارشنبه 20 شهریور 1398, 00:18 صبح
بله, این راه اصولی هست و عموماً به همین شکل استفاده میشه

کد کامل :


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php


اها ممنونم عزیز؛
پس میشه جفتشو تو همون فایل اصلی گذاشت و دیگه ایجاد نکرد
ممنونم مشکل فعلا حل شده و بدون دات پی اچ پی تمام صفحات رو میاره بالا
خیلی لطف کردی

مسئله ای بود در این رابطه تاپیک رو باز میارم بالا.
دستت درد نکنه




فقط یه سوال دیگه؛ اگه بخوایم همون ادرس رو https://x.ir/Actions/join.php تبدیل کنیم به https://x.ir/Actions/join-us (https://x.ir/Actions/join.php) باید چیکار کنیم؟
و همچنین صفحات دیگمون رو به الگوی خاص مثل این.
در اینصورت راه حل چیه؟

MiladWorkShop
چهارشنبه 20 شهریور 1398, 10:37 صبح
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^join-us$ join.php

MohammadGh2011
چهارشنبه 20 شهریور 1398, 11:49 صبح
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^join-us$ join.php


404 Not Found The resource requested could not be found on this server!

MiladWorkShop
چهارشنبه 20 شهریور 1398, 17:20 عصر
اینو تست کنید :


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^Actions/join-us$ Actions/join.php

MohammadGh2011
چهارشنبه 20 شهریور 1398, 21:34 عصر
اینو تست کنید :


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^Actions/join-us$ Actions/join.php

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


موقعی که بخوایم برای هر پست ادرس مشخص کنیم باید چیکار کنیم
مثلا هر پست ادرسش بشه اینطوری:


https://x.ir/پست اول
https://x.ir/پست دوم
https://x.ir/پست سوم



اینو نمیدونم چطوری باید تنظیم کنم و همیشه هم برام سوال بود
ممنون از وقتی که میزاری

ASHKANLAEI
پنج شنبه 21 شهریور 1398, 09:51 صبح
نمیشه برای هر کدوم این شکلی نوشت؟ کد:

RewriteRule ^(آدرس مجازی)$ (آدرس حقیقی)

peymang
پنج شنبه 21 شهریور 1398, 20:40 عصر
باید از روتر استفاده کنید

تمام درخواست ها رو به یک فایل مثلا index.php ارسال کنید، مثل کاری که این صفحه کرده
https://altorouter.com/usage/rewrite-requests.html

و بعد با استفاده از router ، کنترلر و اکش مربوطه رو صدا بزنید
مثل این صفحه
https://altorouter.com/usage/mapping-routes.html

MohammadGh2011
جمعه 22 شهریور 1398, 12:43 عصر
peymang (https://barnamenevis.org/member.php?248575-peymang)
ASHKANLAEI
(https://barnamenevis.org/member.php?421702-ASHKANLAEI)MiladWorkShop (https://barnamenevis.org/member.php?401224-MiladWorkShop)

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


x.ir/db/post1
x.ir/db/post2
x.ir/db/post3

post1 , post2 , post3 قراره از دیتابیس گرفته بشه و تو همون صفحه نشون داده بشه
بنظرم باید دوتا پیج درست کنم، اولی ،همه اینهارو بریزم داخلش؛ تو دومی هروقت رو اینا تو پیج اول کلیک شد با متد get اینارو پاس بدم به اون صفحه و طبق عنوان اطلاعاتشون رو از دیتابیس بگیرم و کامل نشون بدم
درسته؟

MohammadGh2011
جمعه 22 شهریور 1398, 13:30 عصر
نه نمیشه، یه همچین چیزی میفرسته url وقتی رو هر عنصر که از دیتابیس نمایش دادیم کلیک میکنیم:


https://x.ir/Pages/mainpage.php?field=+text


میخوام دقیقا اینو بفرسته تو url و من هم اطلات کامل رو از filed یا id بگیرم بریزم تو صفحه:


https://x.ir/Pages/mainpage/text

MohammadGh2011
جمعه 22 شهریور 1398, 15:34 عصر
درودی دوباره دوستان

ببینید تونستم اینکار رو انجام بدم:

mainpage.php


<?php while ($row = mysqli_fetch_array($query_show_fileds)): ?>
<tr>
<td ><?php echo ('<a href="\Pages\secondpage?ID=' . $row['ID'] . '">' . $row['field1'] . '</a>');?>
</td>
</tr>

secondpage


$id = $_GET['ID'];
$result = mysqli_query($db,"SELECT * FROM TBL WHERE ID = $id");
<?php while ($row = mysqli_fetch_array($result)):?>
<tr >
<td ><?php echo $row['filed1'];?></td><br>
<td><?php echo $row['filed2'];?></td><br>
<td><?php echo $row['filed3'];?></td>
<br>
</tr>

<?php endwhile;?>


اما چیزی که هست تو url صفحه دوم که قراره همه فیلدا طبق فیلد اول که کلیک شده تا نمایش داده بشه اینطوریه:
https://x.ir/Pages/secondpage?ID=1
امیدوارم منظور رو تونسته باشم برسونم
علامت سوال و = رو چطور میشه حذف کرد، خروجی url میخوام اینطوری بشه:
https://x.ir/Pages/secondpage/1



باتشکر از وقتی که میزارید

MohammadGh2011
جمعه 22 شهریور 1398, 15:37 عصر
×××چرا اینطوری شده این سایت برنامه نویس
دوتا دوتا پست میکنه
نه امکان حذف پست میده به کاربر
دکمه تشکر رو هم که حذف کرده

نه دیگه مثل سابق نیست اینجا×××

MohammadGh2011
شنبه 23 شهریور 1398, 00:42 صبح
درودی دوباره دوستان

ببینید تونستم اینکار رو انجام بدم:

mainpage.php


<?php while ($row = mysqli_fetch_array($query_show_fileds)): ?>
<tr>
<td ><?php echo ('<a href="\Pages\secondpage?ID=' . $row['ID'] . '">' . $row['field1'] . '</a>');?>
</td>
</tr>

secondpage


$id = $_GET['ID'];
$result = mysqli_query($db,"SELECT * FROM TBL WHERE ID = $id");
<?php while ($row = mysqli_fetch_array($result)):?>
<tr >
<td ><?php echo $row['filed1'];?></td><br>
<td><?php echo $row['filed2'];?></td><br>
<td><?php echo $row['filed3'];?></td>
<br>
</tr>

<?php endwhile;?>


اما چیزی که هست تو url صفحه دوم که قراره همه فیلدا طبق فیلد اول که کلیک شده تا نمایش داده بشه اینطوریه:
https://x.ir/Pages/secondpage?ID=1
امیدوارم منظور رو تونسته باشم برسونم
علامت سوال و = رو چطور میشه حذف کرد، خروجی url میخوام اینطوری بشه:
https://x.ir/Pages/secondpage/1



باتشکر از وقتی که میزارید


حله خودم یافتم:
این باید تو فایل htaccess اضافه بشه:


RewriteRule ^Pages/x/([0-9]+) Pages/x?ID=$1

peymang
شنبه 23 شهریور 1398, 19:29 عصر
این روش اشتباه است، باید از روتر استفاده کنید. اگر داکیومنت که بالا دادم رو مطالعه کنید به راحتی و اصولی می تونید این مشکل رو برطرف کنید

MohammadGh2011
یک شنبه 24 شهریور 1398, 00:02 صبح
این روش اشتباه است، باید از روتر استفاده کنید. اگر داکیومنت که بالا دادم رو مطالعه کنید به راحتی و اصولی می تونید این مشکل رو برطرف کنید

چرا اشتباه؟
این راه هم بدون دردسر کار میکنه و مسیریابی میکنه
https://www.youtube.com/watch?v=lRmlDeB7Ovs
چیزی که تو این لینک (https://www.youtube.com/watch?v=lRmlDeB7Ovs) اموزش داده.

peymang
یک شنبه 24 شهریور 1398, 01:24 صبح
.htaccess بیشتر برای پیکربندی استفاده میشه

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

ضمن اینکه بیشتر فریمورک ها (تقریبا همه فریمورک های php) از همین روش استفاده می کنند

MohammadGh2011
یک شنبه 24 شهریور 1398, 10:56 صبح
.htaccess بیشتر برای پیکربندی استفاده میشه

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

ضمن اینکه بیشتر فریمورک ها (تقریبا همه فریمورک های php) از همین روش استفاده می کنند

ممنون
اره لرَول هم همین کارو میکنه، دلیلش هم همین پیچیدگی فوق العاده زیاد کدها و فایلهای پروژه بود که نرفتم سمت فریمورک.و به کل گذاشتم کنار...